Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
kotlin rem运算符不';I don’我不能给我正确的答案_Kotlin_Floating Point_Operators_Precision - Fatal编程技术网

kotlin rem运算符不';I don’我不能给我正确的答案

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

我在android项目中使用kotlin的代码中的余数,但是使用这个值我没有得到正确的答案

变量为:

 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)

阅读更多关于浮点的信息:

谢谢你的建议链接,我不知道。。我很快就会试试的。。