用Java编写大数幂函数的算法
假设我想用数学计算2^10000。pow()。我的代码是-
long num = (long)Math.pow(2, 10000);
System.out.println(num);
这里我得到的输出是9223372036854775807,我猜这是long的极限。但是如果我这样写-
double n = Math.pow(2, 10000);
System.out.println(n);
o/p是无穷大,这有点奇怪。任何人都可以帮我
你可以在下面搜索框中键入要查询的问题!
假设我想用数学计算2^10000。pow()。我的代码是-
long num = (long)Math.pow(2, 10000);
System.out.println(num);
这里我得到的输出是9223372036854775807,我猜这是long的极限。但是如果我这样写-
double n = Math.pow(2, 10000);
System.out.println(n);
o/p是无穷大,这有点奇怪。任何人都可以帮我
# 1 楼答案
2^10000超出了多倍和双倍的极限。然而,在Java中,长字符和双字符中的溢出被区别对待。如果将1与long中可能的最大值相加,则换行,结果是long中可能的最小值,等于-2^63。另一方面,如果在double中的最大值上加1,则得到double。正无穷大。有关更多信息,请参见https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html和https://docs.oracle.com/javase/8/docs/api/java/lang/Double.html
# 2 楼答案
这是可行的,但是要注意^ {CD1>}不是很有效,我不认为它适合于数学问题的生产工作。