代码:
var num = Math.pow(2.0, 5.0)
num = Math.pow(5.0, num)
num = Math.pow(2.0, num)
print(num)
输出:
Infinity
当我运行上面的代码时,我得到的值是Infinity。我无法理解发生了什么。它是否超过了 double 变量的限制?此外,Math.pow()
方法将始终返回 double 。
我必须运行上面的代码并需要 num 变量的值。我该如何解决?
实际上,我必须在以编程方式计算指数之后比较两个数字以确定哪一个更高?
喜欢:(2 ^(5 ^(2 ^ 5)))或(5 ^(2 ^(5 ^ 2)))。那么,哪一个更高?
提前致谢。
答案 0 :(得分:1)
Infinity是double
的合法值,只要您的结果超出可表示为double
(~1.8 * 10 ^ 308)的最大数量,您就会得到什么。这不是唯一的“特殊”值:还有负无穷大,负零,NaN,次正规数。
浮点数的工作原理有很多,你可以从这里开始:http://floating-point-gui.de/
我必须运行上面的代码并需要num变量的值。我该如何解决?
运行此代码时,num
的值为无穷大。那里没有什么可以解决的。
实际上,我必须在以编程方式计算指数之后比较两个数字以确定哪一个更高?
喜欢:(2 ^(5 ^(2 ^ 5)))或(5 ^(2 ^(5 ^ 2)))。那么,哪一个更高?
如果数字太大,则不能使用double
。尝试计算和比较它们的对数或对数的对数。