为什么添加1.00,2.00总是给我3.0的clojure?

nge*_*esh 1 add decimal clojure

我不知道这是一个问题还是它的方式,但我需要一个2位小数的值.我可以编写一个函数来将它舍入2位小数,但是有一个解决方案,其中clojure本身在添加时处理它.我的意思是改变数据类型或其他东西.

谢谢.

Art*_*ldt 5

Clojure在引擎盖下使用java的标准双精度浮点数(从1.3开始),并且REPL只打印表示数字所需的数字,所以在这种情况下它是3.0000000 ...但是丢弃不必要的数字.

您可以使用方便的格式功能控制打印的数字.

(format "%.2f" (+ 1.0 2.0))
> "3.00"
Run Code Online (Sandbox Code Playgroud)


num*_*_cn 5

3.0是等于3.00Clojure中,是双,如果你想输出中一个海峡有2位小数,你可以使用的格式.

user> (= 3.0 3.00)
true
user> (== 3.0 3.00)
true
user> (format "%.2f" 3.0)
"3.00"
user> (class 3.00)
java.lang.Double
Run Code Online (Sandbox Code Playgroud)