浮点数比较大小的时候不能直接用等号

例如下面的例子:

如果你要使用程序比较(0.2+0.1)与0.3的大小的时候,会发现他们不相等的,通过输出0.2+0.1的结果发现:0.2+0.1=0.30000000000000004

因此,0.2+0.1就不等于0.3了,因此在程序中遇到类似的问题只能按照精度进行比较:

1 public class Main{
2     public static void main(String[] args) {
3         System.out.println("0.2 + 0.1="+(0.2 + 0.1));
4         System.out.println(0.2 + 0.1 == 0.3);
5         System.out.println(Math.abs(0.2 + 0.1 - 0.3) < 1E-6);
6     }
7 }

上面的程序的运行结果如下:

0.2 + 0.1=0.30000000000000004
false
true

到此为止,我们以后再遇到类似于比较浮点数数值大小问题的时候,就不能直接用等号比较大小了。

posted @ 2015-04-04 11:02  HuijunZhang  阅读(527)  评论(0编辑  收藏  举报
中国