将双变量的值作为无穷大

时间:2018-01-17 16:29:00

标签: kotlin double

代码:

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)))。那么,哪一个更高?

提前致谢。

1 个答案:

答案 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。尝试计算和比较它们的对数或对数的对数。