4

我写了一些代码,应该对 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

知道为什么会这样吗?

4

1 回答 1

4

看起来这是 1.8.7 中的一个错误,已由补丁 358 修复:Ruby 1.8.7 中的指数返回错误答案

power计算的结果没有像这次提交之前numeric.c那样声明,之后溢出行为似乎已经修复。)volatile

于 2012-10-29T23:57:00.813 回答