【发布时间】:2012-12-29 10:45:46
【问题描述】:
2**2
=> 4
2**63
=> -9223372036854775808
2**63 + 2**63
=> -18446744073709551616
64 以及它返回后的所有内容0
2**64
=> 0
2**65
=> 0
2**100
=> 0
2**1000
=> 0
相同的版本在 Linux 上运行良好。
有什么线索吗?
在 64 位模式下运行 OSX 10.8.2。
没有 RVM/Rbenv。
Ruby 1.9.3 运行良好。
【问题讨论】:
-
看起来像整数溢出。
-
有趣的一个。能否请您添加执行
2**63 + 2**63的结果该错误无法在我的环境中重现,因此我无法自己尝试。 -
@izomorphius,更新问题
-
哇!这真是太棒了!即使整数溢出也无法解释当将 2^63 添加到 2^63 时如何得到
-2^64的结果除非你有一个 65 位整数,否则它对我没有任何意义:?似乎大整数的算术在您的系统上完全被破坏了。更大的表情呢?你能算出 2^123 吗? -
@izomorphius,不确定系统,1.9.3 工作正常。问题已更新
标签: ruby