1.浮点数不能精确比较,可以采用以下两种方法采用:
1)改写成整数,避开浮点运算
2)采用——Math.abs(0.2 + 0.1 - 0.3) < 1E-10
2.一些特殊数值(IEEE754)
1)
System.out.println(3 / 0); //显示“被0除”的算术异常
2)特殊的5个数值
double a = Double.POSITIVE_INFINITY;
double b = Double.NEGATIVE_INFINITY;
System.out.println(a*1); //结果为Infinity
System.out.println(a*-1); //结果为-Infinity
System.out.println(1/a); //结果为0.0
System.out.println(1/(-a)); //结果为-0.0
System.out.println(a/b); //结果为NaN
Infinity 代表的是“无限大”,可以直接拿来使用。这里出现 Infinity 的原因是:当进行浮点数运算时,0的值是不精确的(它实际上是一个很小很小的接近于0的数值),因此会出现结果“无限大”的情况。
-Infinity代表的是负无穷大
0.0虽然经常出现,但它实际上也是一个特殊的数字。
-0.0
NaN:Not a Number,代表不是一个数值,如0.0/0.0,Infinity+Infinity, Infinity/Infinity