java double比较大小

来源:互联网 发布:九泰基金 知乎 编辑:程序博客网 时间:2024/05/18 01:23

double和float不能表达每个数值,他们是使用近似来表示值的。

考虑一下下面例子的输出内容

public classOne{ publicstaticvoidmain(String[] args) {      double a = 1.000001;     doubleb = 0.000001;     doubled = a - b;     System.out.println(d);     System.out.println(d==1.0); }}

     结果是false。Java程序员经常犯的一个错误是,在循环中使用浮点数和用==运算符检查条件,在最坏的情况下,这可能会创建一个无限循环,导致Java应用程序挂起。所以我们不应该用==进行精确比较,应该这样做:

public classOne{ publicstaticvoidmain(String[] args) {      double a = 1.000001;     doubleb = 0.000001;     doubled = a - b;     if(Math.abs(d-1.0)<= 0.000001)     {      System.out.println("the are equal");     } }}

     对于double值,我们应该做计算而不是比较,总是比较近似而不是精确的值。例如:当需要比较值是不是等于10.00的时候,我们用是否> 9.95来表示,如下所示:

if (amount == 100.00) // Not Okif (amount > 99.995) // Ok

参考文档

http://www.java67.com/2015/09/float-and-double-value-comparison-in-java-use-relational.html

0 0
原创粉丝点击