JVM上的Clojure如何从浮点转换为尾随垃圾数字的双精度?

JVM上的Clojure如何从浮点转换为尾随垃圾数字的双精度?,clojure,clojure-java-interop,Clojure,Clojure Java Interop,我运行: 我得到: (double (float 3.14159)) 如果我把它归结为: 3.141590118408203 我得到: 3.14100003249268 这种转换是通过什么方法进行的?这与浮点运算的一般精度问题有关;计算机上的浮点不能直接映射到十进制数,所以浮点数和双精度浮点的标准十进制显示是四舍五入的。换言之;这里的float和double具有完全相同的值,但在显示时,它们的舍入方式不同 (double (float 3.141)) 这与浮点操作的一般精度问题有关;计算机

我运行:

我得到:

(double (float 3.14159))
如果我把它归结为:

3.141590118408203
我得到: 3.14100003249268


这种转换是通过什么方法进行的?

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

(double (float 3.141))

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

(double (float 3.141))
在JVM上,可能会有所帮助