JVM上的Clojure如何从float转换为带有尾随垃圾数字的double?

时间:2016-01-26 09:58:46

标签: clojure clojure-java-interop

我跑:

(double (float 3.14159))

我得到了:

3.141590118408203

如果我把它运行到:

(double (float 3.141))

我得到:     3.1410000324249268

这种转换采用什么方法?

1 个答案:

答案 0 :(得分:4)

这与浮点运算的一般精度问题有关;计算机上的浮点不直接映射到十进制数,因此浮点和双精度的标准十进制显示是四舍五入的。换一种说法; float和double在这里具有完全相同的值,但在显示时它们的舍入方式不同。

=> (= (double (float 3.14159)) (float 3.14159))
true

在JVM上,Why converting from float to double changes the value?Convert float to double without losing precision可能会有所帮助。

相关问题