C++ ios 库 - Precision
描述
浮点精度决定了在插入操作中写入以表示浮点值的最大位数。如何解释这取决于浮点字段格式标志是设置为特定表示法(固定或科学)还是未设置(使用默认表示法,不一定等同于固定或科学)。
对于默认语言环境 −
- 使用默认的浮点表示法,精度字段指定要显示的最大有意义数字的总数,包括小数点之前和之后的数字。请注意,它不是最小值,因此如果数字可以显示的位数少于精度,则它不会用尾随零填充显示的数字。
- 在固定计数法和科学计数法中,精度字段准确指定要在小数点后显示多少位,即使这包括尾随的十进制零。 在这种情况下,小数点前的数字与精度无关。
声明
以下是 ios_base::precision 函数的声明。
get (1) streamsize precision() const; set (2) streamsize precision (streamsize prec);
第一种形式 (1) 返回流的当前浮点精度字段的值。
第二种形式 (2) 也将其设置为新值。
参数
prec − 浮点精度的新值。
返回值
调用前在流中选择的精度。
异常
Basic guarantee − 如果抛出异常,则流处于有效状态。
数据竞争
访问 (1) 或修改 (2) 流对象。对同一流对象的并发访问可能会导致数据竞争。
示例
在下面的示例中解释了 ios_base::precision 函数。
#include <iostream> int main () { double f = 3.14159; std::cout.unsetf ( std::ios::floatfield ); std::cout.precision(5); std::cout << f << '\n'; std::cout.precision(10); std::cout << f << '\n'; std::cout.setf( std::ios::fixed, std:: ios::floatfield ); std::cout << f << '\n'; return 0; }
让我们编译并运行上面的程序,这将产生以下结果 −
3.1416 3.14159 3.141590000