如何在Clojure中切换科学记数法?

Nic*_*ick 2 scientific-notation clojure

我正在尝试使用Clojure解决pythonchallenge问题:

(java.lang.Math/pow 2 38)
Run Code Online (Sandbox Code Playgroud)

我有

2.74877906944E11
Run Code Online (Sandbox Code Playgroud)

但是,我需要关闭这种科学记数法.我搜索了clojure文档,仍然不知道该怎么做.在Clojure中是否有通用的方法来切换开/关科学记数法?

谢谢.

noi*_*ith 6

您可以使用格式来控制结果的打印方式.

user> (format "%.0f" (Math/pow 2 38))
"274877906944"
Run Code Online (Sandbox Code Playgroud)

此外,如果没有丢失想要的数据的危险,您可以转换为确切的类型:

user> 274877906944.0
2.74877906944E11
user> (long 274877906944.0)
274877906944
Run Code Online (Sandbox Code Playgroud)

BigInts有更大的投入

user> (bigint 27487790694400000000.0)
27487790694400000000N
Run Code Online (Sandbox Code Playgroud)