我正在尝试将浮点值设置为小数点后三位。例如,值 2.56976 应为 2.569 而不是 2.570。我搜索并找到了这样的答案:
这样的答案并不准确。例如代码:
double value = (double)((unsigned int)(value * (double)placed)) / (double)placed
可以返回value - 1
,这是不正确的。价值和位置的乘法value * (double)placed)
可能会引入类似:2100.999999996。改成 unsigned int 后变成 2100 是错误的(正确的值应该是 2101)。其他答案也存在同样的问题。在 Java 中,您可以使用BigDecimal
which 来节省所有麻烦。
(注意:当然,将 2100.9999 四舍五入不是一个选项,因为它破坏了将地板的整个想法改为“正确 3 位小数”)