std :: setprecision函数给出了错误的结果

时间:2014-05-28 08:06:47

标签: c++ decimal-point

我有以下行显示只有3位小数的float个数字:

myfile << dSet[i].probability[j] << setprecision(3);

它通过150行数据,它打印所有这些数据都很好(按预期的3位数),除了一些数据(特别是第一个数据):

decimal point

...e...数字没问题,但对于其他人,我希望它只显示小数点后的3位数。

1 个答案:

答案 0 :(得分:0)

这里有两个问题,第一个是你不打电话 {<1}}直到之后输出第一个值,所以 它以默认精度6输出。

第二个是你突出显示的所有其他输出都是输出 精度为3:在所有情况下,有三个显着 数字。问题是&#34;精度&#34;有不同的含义 根据输出格式。

从您的输出中,我假设您使用的是默认输出格式,其中精度意味着 确切地说:有效数字的数量(以及是否使用科学格式或固定的选择取决于值)。固定或科学的格式,精确意味着 小数点后的位数,使用固定格式,例如,您的第二个突出显示的条目将是setprecision(听起来像您想要的那样),并且您拥有的科学格式的值都是{{1} }。

如果您希望较小的值以科学格式显示,则可能需要执行此操作 测试你自己,根据你的标准设置固定或科学。 (默认格式的标准是指数小于0.008。)