cout 打印不准确的结果,而 printf 打印准确的结果
cout prints inaccurate result and printf prints accurate result
以下 C++ 代码:
double x = 500000.6;
printf("%f\n", x);
cout << x << endl;
打印以下内容:
500000.600000
500001
为什么 cout
没有打印正确的值 (500000.6)?
将以下行作为代码的开头使得 cout
打印出正确的结果:
cout.precision(7);
但是,将精度设置为 6(无论如何都是默认值)不会打印预期的结果。
为什么会这样?我小数点后只有1位,不是7位!
默认情况下,精度是有效位数的总数。不是小数点后的位数。 500000.6
有七位有效数字,500001
只有六位。
试试这个
cout << fixed << setprecision(1) << x << endl;
用于固定格式时,精度为小数点后的位数。
以下 C++ 代码:
double x = 500000.6;
printf("%f\n", x);
cout << x << endl;
打印以下内容:
500000.600000
500001
为什么 cout
没有打印正确的值 (500000.6)?
将以下行作为代码的开头使得 cout
打印出正确的结果:
cout.precision(7);
但是,将精度设置为 6(无论如何都是默认值)不会打印预期的结果。
为什么会这样?我小数点后只有1位,不是7位!
默认情况下,精度是有效位数的总数。不是小数点后的位数。 500000.6
有七位有效数字,500001
只有六位。
试试这个
cout << fixed << setprecision(1) << x << endl;
用于固定格式时,精度为小数点后的位数。