朱莉娅和大数字

Jul*_*en 0 precision biginteger julia

朱莉娅如何计算大数字?

例如,这可以按预期工作:

julia> 10^18
1000000000000000000  
Run Code Online (Sandbox Code Playgroud)

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

julia> 10^19
    -8446744073709551616 

 julia> 10^20
     7766279631452241920 
Run Code Online (Sandbox Code Playgroud)

但是如果使用十进制数则它可以工作:

julia> 10.0^20
1.0e20
Run Code Online (Sandbox Code Playgroud)

你知道为什么吗?

Gaz*_*ouu 6

请查看此文档页面: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
Run Code Online (Sandbox Code Playgroud)