Julia如何计算大数?
例如,以下代码能够正常工作:
julia> 10^18
1000000000000000000
但对于更大的数字,整数存在一个问题:
julia> 10^19
-8446744073709551616
julia> 10^20
7766279631452241920
但如果使用小数,则可以正常工作:
julia> 10.0^20
1.0e20
你知道为什么吗?
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