【发布时间】:2012-11-06 20:14:17
【问题描述】:
所以,我从理论上读到,Ruby 中的整数没有最大值,它们可以任意大。然而,当我乘以下面的结果是一个负值(我认为这是溢出的标志?):
44404051714 * 44404051714 => -2081807267335685116
谁能给我解释一下?
【问题讨论】:
-
嗯,在这里工作:
irb(main):001:0> 44404051714 * 44404051714 => 1971719808619586337796 -
我也在使用 irb - 你使用的是哪个版本的 Ruby?
-
ruby 1.8.7 (2011-12-28 patchlevel 357) [x86_64-linux] -
嗯。看起来像一个错误,无论是在 Ruby 的实现中还是在用于编译 Ruby 的编译器中。你得到的值是正确的模
2**64。 (准确地说,是107 * 2**64。) -
@hack3r,可能与您安装的版本有关。你是怎么安装的?在什么平台上? here is a proof 它在 64 位 CentOS 上的所有 rubies 所有版本上都能正常运行
标签: ruby math multiplication