2024 Clojure现状调查中分享您的想法!

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

0
Clojure
重新分类

你好,

希望core.typed是正确的分类,没有“核心”可选项

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操作时使用的精度和舍入模式"。

感谢指出这一点。这样做的原因是什么?
它确实在文档中,但在使用上这似乎是一个特殊情况
我认为你可能误解了这个宏的目的——它设置在执行使用BigDecimals的数学操作时使用的精度和舍入模式。如果你想要更改单个值的精度,BigDecimal类中有Java API可以做到这一点。有关更多信息,请参阅https://docs.oracle.com/javase/8/docs/api/java/math/BigDecimal.html。如果你想要更改缩放比例,可以通过示例来执行,如下所示:(setScale 1.23456M 4 java.math.RoundingMode/DOWN)。
...