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

これはパッチ358によって修正された1.8.7のバグのようです:Ruby1.8.7のべき乗は間違った答えを返します

(でのpower計算の結果は、このコミットの前のようにnumeric.c宣言されていませんでした。その後、オーバーフローの動作は修正されたようです。)volatile

于 2012-10-29T23:57:00.813 に答える