朱莉娅和大数

3

Julia如何计算大数?

例如,以下代码能够正常工作:

julia> 10^18
1000000000000000000  

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

julia> 10^19
    -8446744073709551616 

 julia> 10^20
     7766279631452241920 

但如果使用小数,则可以正常工作:

julia> 10.0^20
1.0e20

你知道为什么吗?


2
你已经得到了一个非常好的答案。我只是想补充一下,你在问题中观察到的行为与 Julia 本身无关。64位整数和64位浮点数之间的差异几乎适用于每种编程语言。 - Colin T Bowers
1个回答

10

请查看此文档页面: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

感谢您的回答和帮助,@Gazouu。 - Julien
BigInt 类型的最大值是多少? - AVA

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接