Ruby中的大乘法输出为负数

Ruby中的大乘法输出为负数,ruby,integer,exponentiation,Ruby,Integer,Exponentiation,我写了一些代码,应该是1的n^n之和看起来这是1.8.7中的一个bug,由补丁358修复: (在numeric.c中的power计算结果之前未声明为volatile,之后溢出行为似乎已被修复。)这是哪个版本的Ruby?它应该切换到bignums以避免溢出/环绕,至少在1.9.3和1.8.7中是这样。代码在1.8.7中运行良好,因此到bignums的转换在那里也运行良好。这是从n=16开始的。也许你应该显示你得到的arr=1..28的输出。你不是在求平方。在ruby 1.8.7中,我在迭代28中得

我写了一些代码,应该是1的n^n之和看起来这是1.8.7中的一个bug,由补丁358修复:


(在
numeric.c
中的
power
计算结果之前未声明为
volatile
,之后溢出行为似乎已被修复。)

这是哪个版本的Ruby?它应该切换到bignums以避免溢出/环绕,至少在1.9.3和1.8.7中是这样。代码在1.8.7中运行良好,因此到bignums的转换在那里也运行良好。这是从n=16开始的。也许你应该显示你得到的
arr=1..28的输出。你不是在求平方。在ruby 1.8.7中,我在迭代28中得到负值,但在ruby 1.9.3中,我得到了我期望的结果。我怀疑这个算法中有什么东西在欺骗ruby在它应该使用的时候不使用
Bignum
。。。
sum = 0
(1..1000).each do |n|
  sum += n**n
  puts "n = #{n}, sum = #{sum}"
end
n = 29, sum = -2015400977700573523892329442490139437391867