我有相同的数据集并运行相同的代码,但有时我在小数点后第19位及之后得到不同的结果。虽然对于小于0.0001的数字我不太关心这个问题,但这让我怀疑小数点后第19位是否是Raku的精度极限?
Word 104 differ:
0.04948872986571077 19 chars
0.04948872986571079 19 chars
Word 105 differ:
0.004052062278212545 20 chars
0.0040520622782125445 21 chars
TL;DR查看文档的杰出数字页面。
(在我写下下面的答案之前,我已经忘记了那一页。把这个答案看作是对该页面的几个方面的简要总结。
这有两个方面。内部精度和打印精度。
100%内部精度,直到RAM耗尽
Raku支持任意精度的数字类型。引用维基百科相关页面:
[1] 如果你这样做,它将保持100%的精度,直到内存耗尽。精度数字仅受主机系统可用内存的限制
任意精度类型 | 对应的类型检查[2] | 该类型值的示例 | Int | my Int $foo ... | 66174449004242214902112876935633591964790957800362273 |
---|---|---|
FatRat | my FatRat $foo ... | 66174449004242214902112876935633591964790957800362273 / 13234889800848443102075932929798260216894990083844716 |