Ruby中的大乘法输出结果为负

时间:2012-10-29 22:25:59

标签: ruby integer exponentiation

我写了一些代码,该代码应该为1< = n< = 1000求和n ^ n。 这是代码:

sum = 0
(1..1000).each do |n|
  sum += n**n
  puts "n = #{n}, sum = #{sum}"
end

出于某种原因,在28号之后输出结果为负:

n = 29, sum = -2015400977700573523892329442490139437391867

知道为什么会这样吗?

1 个答案:

答案 0 :(得分:4)

看起来这是修补程序358修复的1.8.7中的错误:Exponentiation in Ruby 1.8.7 Returns Wrong Answers

powernumeric.c计算的结果未在this commit之前声明为volatile,此后溢出行为似乎已修复。)