浮点数注意点

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

猜你喜欢

转载自blog.csdn.net/qq_41650131/article/details/86685365