goo*_*s17 4 c++ floating-point double
我正在编写一个程序,我不得不将其加倍到小数点后第二位.我注意到 printf("%.2f",(double)12.555)返回12.55.但是,printf("%.2f",(float)12.555)返回12.56.谁能解释为什么会这样?
12.555是一个在二进制浮点中无法精确表示的数字.碰巧的是,在系统上以双精度浮点表示的最接近1.2555的值略小于1.2555,并且在单精度浮点中可表示的最接近1.2555的值略大于1.2555.
假设转换使用的舍入模式是舍入到最接近的(与偶数相关),这是IEEE 754标准中的默认值,则可以预期所描述的输出.
| 归档时间: |
|
| 查看次数: |
144 次 |
| 最近记录: |