我了解到Clojure读者使用后缀“M'”(如1.23M)将十进制文字解释为BigDecimal。而且我也知道十进制数没有' M'成为Java双
但我认为正常的十进制数是BigDecimal会更好,而依赖于主机的十进制有后缀,比如1.23H。因此,当由于IEEE double的精度限制而导致数字被破坏或截断时,我们可以很容易地注意到该数字是精度受限的。另外,我认为更容易表达应该与主机无关。
除了时间性能之外,Clojure是否有任何理由将文字小数解释为Java double?另外,我不认为时间性能是一个答案,因为它不是C / C ++,并且声明依赖于主机的十进制的其他方式可以像' 1.23H'那样实现。
答案 0 :(得分:10)
有一段时间,对于整数,Clojure会在需要时自动提升到更大的尺寸。这已被更改,以便抛出溢出异常。我的感觉,远远望去:
所以决定默认是使用普通整数(我认为Java长?)并且当程序员调用它时只使用任意大整数,当程序员知道他们愿意接受性能命中时,互操作命中。
我的猜测是类似的决定,用于带小数点的数字。
答案 1 :(得分:4)