问题
Java是否有任何代表每种数值数据类型的无穷大?它是如何实现的,以便我可以用它进行数学运算?
例如。
int myInf = infinity; //However it is done
myInf + 5; //returns infinity
myInf*(-1); //returns negative infinity
我尝试使用非常大的数字,但我想要一个合适的,容易解决方案。
#1 热门回答(148 赞)
double
支持Infinity
double inf = Double.POSITIVE_INFINITY;
System.out.println(inf + 5);
System.out.println(inf - inf); // same as Double.NaN
System.out.println(inf * -1); // same as Double.NEGATIVE_INFINITY
版画
Infinity
NaN
-Infinity
注意:Infinity - Infinity
不是数字。
#2 热门回答(26 赞)
我假设你使用整数数学是有原因的。如果是这样,通过使用Integer
class的MAX_VALUE字段,你可以获得与POSITIVE_INFINITY功能几乎相同的结果:
Integer myInf = Integer.MAX_VALUE;
(对于NEGATIVE_INFINITY,你可以使用MIN_VALUE。)当然会有一些功能差异,例如,当比较myInf
到恰好是MAX_VALUE的值时:显然这个数字不小于myInf
。
还有a library实际上有字段POSITIVE_INFINITY和NEGATIVE_INFINITY,但它们实际上只是MAX_VALUE和MIN_VALUE的新名称。
#3 热门回答(8 赞)
要使用Infinity
,你可以使用Double
,它支持Infinity
: -
System.out.println(Double.POSITIVE_INFINITY);
System.out.println(Double.POSITIVE_INFINITY * -1);
System.out.println(Double.NEGATIVE_INFINITY);
System.out.println(Double.POSITIVE_INFINITY - Double.NEGATIVE_INFINITY);
System.out.println(Double.POSITIVE_INFINITY - Double.POSITIVE_INFINITY);
OUTPUT: -
Infinity
-Infinity
-Infinity
Infinity
NaN