【发布时间】:2022-01-13 01:20:43
【问题描述】:
我遇到了一个问题,当我打印一个双精度值时,它会不一致地向上或向下舍入。我使用的格式:
printf("%.2lf", double);
这可能是什么问题?谢谢!
【问题讨论】:
-
示例就像当值是 1203.505000 时它变成 1203.50 但在其他时候它可能变成 1203.51
-
该分数可能无法以二进制浮点数精确表示。所以它实际上类似于
1203.505000000001(向上取整)或1203.50499999999(向下取整)。浮点运算会累积类似的舍入误差。 -
如果这是个问题,您可能一开始就不应该使用浮点数。如果这是钱,请使用整数乘以 100。
-
分数精确到小数点后第三位,我需要使用双精度
-
请发一个minimal reproducible example,证明你用相同的值得到不同的结果。
标签: c floating-point rounding