Ruby Bignum坏了吗?

Sam*_*ham 2 ruby biginteger bug-reporting

我试图计算大数的阶乘.

def fact(n)
  num = 1
  for i in 1..n
     num *= i
  end
  num
end
fact(90000)
Run Code Online (Sandbox Code Playgroud)

使用上面的代码使用Ruby 2.2.0,我得到的结果0以预期的一堆结束,但是对于2.1.1p76,我得到一个结尾的数字...818500998068961280.这是Ruby的问题吗?

小智 7

它看起来是一个问题ruby 2.1.1p76.我能够重现一个以数字结尾的数字67818500998068961280.但它确实似乎工作得很好2.2.0.

  • 顺便说一句。该错误已在[2.1.5](http://svn.ruby-lang.org/repos/ruby/tags/v2_1_5/ChangeLog)中修复(请参阅有关[错误#10465]的第5条条目(https:// bugs .ruby-lang.org / issues / 10465)或更高版本(如果不能使用2.2)。 (2认同)