在Java中,我注意到1.1 + (2.2 * (3.3 + 4.4))
的结果为18.040000000000003
,而不是18.04
。有没有办法防止这种情况发生?
在Java中,我注意到1.1 + (2.2 * (3.3 + 4.4))
的结果为18.040000000000003
,而不是18.04
。有没有办法防止这种情况发生?
Math.round
,但我猜这不是你想要的。java.math.BigDecimal
(任意精度十进制),允许您存储这些十进制数而不会丢失精度。double
。 - Jon SkeetBigDecimal
类。通过设置小数点后的数字位数、舍入模式以及接受MathContext作为参数,BigDecimal允许您设置非常精确的规则进行计算。BigDecimal
是对象,因此所有操作都是通过方法完成,而不是使用标准数学运算符。这可能有点麻烦,特别是在构建更复杂的表达式时,如果不小心处理可能会导致一些令人讨厌的、不清晰的代码。其次,由于如上所述,所有操作都是在对象上完成的,它们在资源方面更加繁重。
BigDecimal
类。 - brso05