我写了一些代码,该代码应该为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
知道为什么会这样吗?
答案 0 :(得分:4)
看起来这是修补程序358修复的1.8.7中的错误:Exponentiation in Ruby 1.8.7 Returns Wrong Answers
(power
中numeric.c
计算的结果未在this commit之前声明为volatile
,此后溢出行为似乎已修复。)