[英]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
,以便在下一次迭代期间传递给knuth
的r
的值要大得多,从而导致r
的新值再次大大增加,因此直到r
变为负数为止。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.