Clojure bigdec 划分规则
Clojure bigdec division rules
我遇到了一个浮点精度问题:我在 Doubles
and/or Long
之间划分的结果之一是 2.8421709430404007E-14
而不是 0
.
所以我想我必须使用 BigDecimals
(bigdec
更准确)。
我的问题是:
- 涉及
bigdec
的操作是否会将操作中涉及的所有其他数字转换为合适的类型?
- 有没有这样的操作?我基本上是在寻找
*'
的等价物,但 /'
似乎不存在。
如果您在计算中使用任何双精度数(或浮点数),最终结果将是双精度数。
否则任何涉及 BigDecimal
的计算都会 return 一个 BigDecimal
结果或抛出异常。
如果无法准确表示结果,如果某些中间计算导致长溢出,或者如果除以零,则可能会抛出异常。
+'
等提升到 BigInteger
其中 +
会导致整数溢出。
可以引入舍入来处理精确表示问题——参见(doc with-precision)
。
我遇到了一个浮点精度问题:我在 Doubles
and/or Long
之间划分的结果之一是 2.8421709430404007E-14
而不是 0
.
所以我想我必须使用 BigDecimals
(bigdec
更准确)。
我的问题是:
- 涉及
bigdec
的操作是否会将操作中涉及的所有其他数字转换为合适的类型? - 有没有这样的操作?我基本上是在寻找
*'
的等价物,但/'
似乎不存在。
如果您在计算中使用任何双精度数(或浮点数),最终结果将是双精度数。
否则任何涉及
BigDecimal
的计算都会 return 一个BigDecimal
结果或抛出异常。如果无法准确表示结果,如果某些中间计算导致长溢出,或者如果除以零,则可能会抛出异常。
+'
等提升到BigInteger
其中+
会导致整数溢出。可以引入舍入来处理精确表示问题——参见
(doc with-precision)
。