0

在下面的示例中,输出为 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 从哪里开始?因为它声明其设置精度用于十进制精度。然而在第一个示例中,它查看的是整个双精度值,而不仅仅是小数。

请指教。谢谢。

4

2 回答 2

1

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

对于默认语言环境:

  • 使用默认的浮点表示法,精度字段指定要显示的最大有意义数字的总数,包括小数点之前和之后的数字。请注意,它不是最小值,因此如果数字可以显示的位数少于精度,则它不会用尾随零填充显示的数字。
  • 在固定计数法和科学计数法中,精度字段准确指定要在小数点后显示多少位,即使这包括尾随的十进制零。在这种情况下,小数点前的数字与精度无关。
于 2014-09-16T22:06:43.620 回答
0

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

于 2014-09-16T22:12:41.743 回答