概述
在比较大小时,千万不能用下面这种方式来比较大小
System.out.println(0.1+0.2 == 0.3);
这是很危险的,很显然,结果是false
在计算机中存储的都是二进制数,十进制中的一些有限小数,如:0.3在计算机中存储就有可能是无限循环小数,就不能直接用“==”进行比较。一般都是用下面的方式来进行比较:
System.out.println(Math.abs(0.1+0.2-0.3)< 1e-6);
一般浮点数来比较,都是要求足够接近,一般10的-6次方就差不多可以认为相等了。
还有就是,类似这种的
System.out.println(1/0);
很显然会抛出java.lang.ArithmeticException: / by zero的异常
但是,如果换成这个
System.out.println(1.0/0);
会得到这样的一个结果
Infinitly即无限大的意思,这个时候,计算机是在计算一个浮点数与一个无限小的数的商,肯定就是无穷大了。
在IEEE754还有一些特殊值
double x = 1.0/0;
System.out.println(x+x);
System.out.println(1/x);
System.out.println(x*-1);
System.out.println(1/(-x));
System.out.println(x-x);
得到的结果如下:
这里的NaN的意思是,Not a Number,即它不是一个数字。你再进行任何计算时,得到的都是NaN。如下面这样:
double x = 0.0/0;
System.out.println(x);
System.out.println(x+1000);
System.out.println(x*2);
最后
以上就是温柔钢笔为你收集整理的JAVA中浮点数的一些注意事项的全部内容,希望文章能够帮你解决JAVA中浮点数的一些注意事项所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复