【问题标题】:Julia and big numbers朱莉娅和大数字
【发布时间】:2018-05-14 13:32:40
【问题描述】:

Julia 如何计算大数?

例如,这按预期工作:

julia> 10^18
1000000000000000000  

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

julia> 10^19
    -8446744073709551616 

 julia> 10^20
     7766279631452241920 

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

julia> 10.0^20
1.0e20

你知道为什么吗?

【问题讨论】:

  • 你已经得到了很好的答案。我只是想补充一点,您在问题中观察到的行为与 Julia per se 无关。 64 位整数和 64 位浮点数之间的区别几乎在所有语言中都很常见。

标签: julia precision biginteger


【解决方案1】:

查看此文档页面: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
  • 类型 BigInt 的最大值是多少?
猜你喜欢
  • 2018-11-27
  • 2023-03-30
  • 1970-01-01
  • 2014-04-26
  • 1970-01-01
  • 1970-01-01
  • 2018-03-25
  • 1970-01-01
  • 2014-02-04
相关资源
最近更新 更多