clojure.core/mod
函数对于较小的正浮点被除数和正整数除数工作得像预期一样。但今天我正在做一些边界情况测试,并遇到了以下令人费解的行为:
`
user=> (def big Double/MAX_VALUE)
'user/big
user=> (mod big 10)
0.0
user=> (mod big 100)
0.0
user=> (mod big 1000)
1.9958403095347198E292
user=> (mod big 999)
-Infinity
user=> (mod big 998)
0.0
user=> (mod big 997)
1.9958403095347198E292
user=> (mod big 996)
0.0
user=> (mod big 995)
0.0
user=> (mod big 994)
0.0
user=> (mod big 1001)
1.9958403095347198E292
user=> (mod big 1002)
0.0
user=> (mod big 1003)
0.0
user=> (mod big 1004)
-Infinity
user=> (mod big 1005)
0.0
`
不清楚这是否是从 Java 错误中继承而来。我不认为选择的值有任何特别之处,我怀疑如果搜索的话,很容易找到其他错误。