我了解到Clojure读者将十进制文字解释为后缀"M",如1.23M,作为BigDecimal.而且我也知道没有'M'的十进制数字变成了Java的两倍.
但我认为正常的十进制数是BigDecimal会更好,而依赖于主机的十进制有后缀,比如1.23H.因此,当由于IEEE double的精度限制而导致数字被破坏或截断时,我们可以很容易地注意到该数字是精度受限的.此外,我认为更容易表达应该是独立于主机的.
除了时间性能之外,Clojure是否有任何理由将文字小数解释为Java double?另外,我认为时间性能不是一个答案,因为它不是C/C++,而且声明依赖于主机的十进制的其他方式可以像'1.23H'那样实现.
一旦有了整数,Clojure会在需要时自动升级到更大的尺寸.这已被更改,以便抛出溢出异常.我的感觉,远远望去:
Clojure的功能是在实际的时间内做实际的实用语言.他们不希望性能爆炸,因为数字操作意外地使用任意精度库而不是CPU整数操作.与似乎优先考虑数学上的好处而不是实用性的方案形成对比.
当操作间调用失败时,人们不喜欢在运行时感到惊讶,因为Java库需要32位整数而不是任意大小的整数.
所以决定默认是使用普通整数(我认为Java长?)并且只有当程序员调用它时才会使用任意大整数,当程序员故意认为他们愿意接受性能命中时,以及inter - 击中.
我的猜测类似于小数点数的决定.