繁体   English   中英

java.lang.ArithmeticException:jruby中的负指数

[英]java.lang.ArithmeticException: Negative exponent in jruby

我有以下JRuby代码:

def knuth(a, n, b)
   if n ==1
      r = a**b
   else
      r = 1
      b.times do
         r = knuth a, n-1, r
      end
   end
   return r
end
k = knuth 3, 4, 5
puts k
puts k.size

但这给了我

java.lang.ArithmeticException:负指数

知道为什么吗?

我在Windows上并使用jruby-9.0.0.0.pre2-p0

这里有两件事在起作用。 首先,在JVM中对所有数字进行签名。 因此,当r变得足够大以至于高位被置位时,数字实际上变为负数,因此产生了误差。 第二件事是,每次您通过b.times循环时,都会重新分配r ,以便在下一次迭代期间传递给knuthr的值要大得多,从而导致r的新值再次大大增加,因此直到r变为负数为止。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM