朱莉娅和大数字

Julia and big numbers

Julia 如何计算大数?

例如,这按预期工作:

julia> 10^18
1000000000000000000  

但是对于更大的数字,整数有问题:

julia> 10^19
    -8446744073709551616 

 julia> 10^20
     7766279631452241920 

但是如果使用十进制数就可以了:

julia> 10.0^20
1.0e20

你知道为什么吗?

查看此文档页面:https://docs.julialang.org/en/release-0.4/manual/integers-and-floating-point-numbers/

如您所见,Int64 的最大长度为:2^63 - 1 ~ 1.0 * 10^19 所以你的 10^19 大于这个最大值。这就是为什么有问题。 您可以尝试将 10 转换为另一种类型。

10.0^20 之所以有效,是因为 10.0 是一个浮点数,因此它具有更高的最大值。

如果你想要无限精度的整数,你可以使用BigInts:

julia> BigInt(10)^100
10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000