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 是一个特定的贡献库(尽管我不确定它属于 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)。
...