如何在Java中实现无穷大?
2022-08-31 07:03:10
Java对于每种数值数据类型来说有什么可以表示无穷大的东西吗?它是如何实现的,以便我可以用它进行数学运算?
例如:
int myInf = infinity; //However it is done
myInf + 5; //returns infinity
myInf*(-1); //returns negative infinity
我尝试过使用非常大的数字,但我想要一个适当,简单的解决方案。
Java对于每种数值数据类型来说有什么可以表示无穷大的东西吗?它是如何实现的,以便我可以用它进行数学运算?
例如:
int myInf = infinity; //However it is done
myInf + 5; //returns infinity
myInf*(-1); //returns negative infinity
我尝试过使用非常大的数字,但我想要一个适当,简单的解决方案。
double支持无限
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
我假设你使用整数数学是有原因的。如果是这样,则可以通过使用类的MAX_VALUE字段获得在功能上与POSITIVE_INFINITY几乎相同的结果:Integer
Integer myInf = Integer.MAX_VALUE;
(对于NEGATIVE_INFINITY,您可以使用MIN_VALUE。当然会有一些功能差异,例如,与碰巧MAX_VALUE的值进行比较时:显然这个数字不小于。此外,如下面的评论中所述,递增正无穷大会将您包装回负数(递减负无穷大会将您包装回正数)。myInfmyInf
还有一个库,实际上有字段POSITIVE_INFINITY和NEGATIVE_INFINITY,但它们实际上只是MAX_VALUE和MIN_VALUE的新名称。