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

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

感谢指出这一点。这样做的原因是什么?
它已经在文档中,但从人体工程学角度来看,这看起来像是一个特殊情况。
我想你可能误解了这个宏的目的 - 它设置在用BigDecimal进行数学运算时要使用的精度和舍入模式。如果您想更改单个值的精度,BigDecimal类上有Java API可以做到这一点。有关详细信息,请参阅https://docs.oracle.com/javase/8/docs/api/java/math/BigDecimal.html。如果您想更改小数点后位数,例如,可以使用(.setScale 1.23456M 4 java.math.RoundingMode/DOWN)。
...