在c ++中它是从十进制开始还是整个#setprecision开始

时间:2014-09-16 22:02:22

标签: c++ double output fixed iomanip

在下面的示例中,输出为3.1,因此它从第一个值开始。

double y = 3.14784;
cout << setprecision(2) << y;

在以下示例中,输出精度从十进制值开始

int x = 2;
double y = 3.0;
cout << setprecision(2) << x/y;

然后在下面的代码行中 - 与上面声明的x和y相同,我们得到的精度始终没有显示。 (以下打印6.00的唯一方法是使用固定的)。

cout << setprecision(2) << x * y; // shows 6. 

如果我们没有使用固定 - 只是一个setprecision(n)n开始在哪里?因为它声明它的设定精度用于小数精度。然而在第一个例子中,它查看整个double值而不仅仅是小数。

请指教。 感谢。

2 个答案:

答案 0 :(得分:1)

来自http://www.cplusplus.com/reference/ios/ios_base/precision/

  

对于默认语言环境:

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

答案 1 :(得分:0)

n从第一个有意义的数字(非零)开始