Ruby 中的大乘法输出结果为负

2024-04-13

我写了一些代码,应该对 1

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 中的求幂返回错误答案 https://stackoverflow.com/questions/12009799/exponentiation-in-ruby-1-8-7-returns-wrong-answers

(结果是power计算中numeric.c没有被声明为volatile before 这次提交 https://github.com/ruby/ruby/commit/4e4649e13cd4175aab75a0edc2fc5b082cf735d1,之后溢出行为似乎已得到修复。)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ruby 中的大乘法输出结果为负 的相关文章

随机推荐