Clojure bigdec 划分规则

Clojure bigdec division rules

我遇到了一个浮点精度问题:我在 Doubles and/or Long 之间划分的结果之一是 2.8421709430404007E-14 而不是 0 .

所以我想我必须使用 BigDecimalsbigdec 更准确)。

我的问题是:

  1. 如果您在计算中使用任何双精度数(或浮点数),最终结果将是双精度数。

  2. 否则任何涉及 BigDecimal 的计算都会 return 一个 BigDecimal 结果或抛出异常。

  3. 如果无法准确表示结果,如果某些中间计算导致长溢出,或者如果除以零,则可能会抛出异常。

  4. +' 等提升到 BigInteger 其中 + 会导致整数溢出。

  5. 可以引入舍入来处理精确表示问题——参见(doc with-precision)