Ruby中的大型乘法输出结果为负
我写了一些代码,它应该为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.8.7中的一个错误,由补丁358修复: Ruby 1.8.7中的指数返回错误的答案
(在此提交之前, numeric.c
中的power
计算结果未声明为volatile
,之后溢出行为似乎已得到修复。)