kotlin rem运算符不';I don’我不能给我正确的答案
我在android项目中使用kotlin的代码中的余数,但是使用这个值我没有得到正确的答案 变量为:kotlin rem运算符不';I don’我不能给我正确的答案,kotlin,floating-point,operators,precision,Kotlin,Floating Point,Operators,Precision,我在android项目中使用kotlin的代码中的余数,但是使用这个值我没有得到正确的答案 变量为: val vv = 1529.71 val ratio = 0.01 val remainder = vv.rem(ratio) 它必须是零,但余数值为: 4.5363018896793506E-15 我不明白为什么会发生这种情况。答案是因为vv实际上不是1529.71,而是最接近的Double,确切值是1529.71000000000003697978070917129516601562
val vv = 1529.71
val ratio = 0.01
val remainder = vv.rem(ratio)
它必须是零,但余数值为:
4.5363018896793506E-15
我不明白为什么会发生这种情况。答案是因为
vv
实际上不是1529.71,而是最接近的Double
,确切值是1529.710000000000036979780709171295166015625(最简单的方法是println(java.math.BigDecimal(vv))
)。如果要精确表示十进制数,请使用BigDecimal
并将分数作为字符串传递:
val vv = BigDecimal("1529.71")
val ratio = BigDecimal("0.01")
val remainder = vv.rem(ratio)
阅读更多关于浮点的信息:谢谢你的建议链接,我不知道。。我很快就会试试的。。