C++ IOS 库 - 精度



描述

浮点精度决定了在插入操作中写入浮点值的最多位数。如何解释它取决于 floatfield 格式标志是否设置为特定表示法(固定或科学)或未设置(使用默认表示法,它不一定等效于固定或科学)。

对于默认语言环境 -

  • 使用默认浮点表示法,精度字段指定要显示的总共最大有效位数,包括小数点前和小数点后的位数。请注意,它不是最小值,因此如果该数字可以用小于精度的位数显示,则它不会用尾随零填充显示的数字。
  • 在固定和科学表示法中,精度字段准确指定小数点后显示多少位数字,即使这包括尾随小数零。在这种情况下,小数点前的数字与精度无关。

声明

以下是 ios_base::precision 函数的声明。

get (1)	streamsize precision() const;
set (2)	streamsize precision (streamsize prec);

第一种形式 (1) 返回流当前浮点精度字段的值。

第二种形式 (2) 还将其设置为新值。

参数

prec - 浮点精度的新的值。

返回值

调用前流中选择的精度。

异常

基本保证 - 如果抛出异常,则流处于有效状态。

数据竞争

访问 (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
ios.htm
广告