2012-06-06 43 views

回答

16

数量0.298475不是在double精确表示的(因为它不是一个分数分母为2的幂,是40000分之11939),以及存储在实际数量实际上比接近0.29847到0.29848。

+4

0.298474999999999990318855225268634967505931854248046875。 – dan04

+1

换句话说,实际上有两个舍入步骤:一个是字面'0.298475'转换为'double',另一个是当打印一些数字到'cout'时。 – aschepler

+2

@ dan04:这是一个毫无意义的显示;一个64位IEEE754浮点只包含大约17位十进制数字的信息...... –

1

从文档setprecision()中可以看到,不会执行任何舍入,只是设置小数点后显示的最大位数。 double和float数的可能表示可能与您使用的常量初始值设定项不同。准确地说,是

相关问题