2024 Clojure状态调查!分享您的想法。

欢迎!请参阅关于页面获取更多关于如何使用本站的信息。

0
Clojure
已重新分类

大家好,

希望core.typed是合适类别,并没有"core"可以选择

Clojure 1.10.1

(with-precision 4 1.23456) ;; 1.23456
(with-precision 4 1.23456M) ;; 1.23456M
(with-precision 4 (BigDecimal. 1.23456)) ;; 1.2345600000000001017497197608463466167449951171875M
(with-precision 4 (* 1 (BigDecimal. 1.23456))) ;; 1.235M
(with-precision 4 (+ 0 (BigDecimal. 1.23456))) ;; 1.235M

只有当数字是*或+的结果供应时,似乎才能像预期那样工作

敬礼,
Daniel

有一个Clojure顶级类别 -- core.typed是一个特定的Contrib库(尽管我不确定它属于Clojure的哪个子类别... Alex?
您不需要设置子类别,顶级Clojure是可以的。

1 个回答

0
by

这是正确的,根据文档字符串,“设置用于BigDecimal操作的精度和舍入模式”。

by
感谢指出。这样做的原因是什么?
它在文档中有说明,但不便于使用,看起来是一个特殊情况。
by
我认为你理解错了这个宏的作用 —— 它在用BigDecimal进行数学运算时设置要使用的精度和舍入模式。如果你想要改变单个值的精度,BigDecimal类有Java API可以做到这一点。请参阅https://docs.oracle.com/javase/8/docs/api/java/math/BigDecimal.html获取更多详细信息。如果你想改变小数点后的位数,例如你可以这样设置(.setScale 1.23456M 4 java.math.RoundingMode/DOWN)。
...