朱莉娅和大数字
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
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