您的位置:首页 > 编程语言 > Java开发

java中两个double类型数据的大小

2015-10-17 10:28 543 查看
非整型数,运算由于精度问题,可能会有误差,建议使用BigDecimal类型,具体 BigDecimal的详细说明参考jdk开发帮助文档。   
Double有方法euqals(Double) 返回boolean还有static intcompare(double d1,double d2)比较两个指定的 double 值。

    intcompareTo(Double anotherDouble)对两个 Double 对象所表示的数值进行比较。

import java.math.BigDecimal;

public class DoubleCompare {

public String compare(BigDecimal val1, BigDecimal val2) {

    String result = "";

    if (val1.compareTo(val2) < 0) {

        result = "第二位数大!";

    }

    if (val1.compareTo(val2) == 0) {

        result = "两位数一样大!";

    }

    if (val1.compareTo(val2) > 0) {

        result = "第一位数大!";

    }

    return result;

}

public static void main(String[] args) {

    double a = 0.01;

    double b = 0.001;

    BigDecimal data1 = new BigDecimal(a);

    BigDecimal data2 = new BigDecimal(b);

    System.out.print(new DoubleCompare().compare(data1, data2));

}
Double没有的,double有 Double是对象,看两个对象是否值相同,调用 equals方法成都网站优化

这也是解决double精度比较的方法。另外还有一种方法,你可以用写一个 double成员属性,然后在eclipse中重写equals方法,你会看到他是怎么处理两个double值是否相同的 sun公司用的是Double.doubleToLongBits(要比较的double值) != Double.doubleToLongBits(另一个double值) 这种方式
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  jdk