java语言中double比较大小方法

由于double类型不像int这种整形数类型,直接使用运算符比较就可以了,一般会做差后与一个指定的极小的数比较,比如0.00001.但是这样也会产生误差。所以在实际使用过程中,不建议直接比较大小,而是通过java中的BigDecimal类型包装double后再去比较大小。

函数原型声明如下:

1
2
3
4
5
6
7
8
9
public int compareTo(BigDecimal val)将此 BigDecimal 与指定的 BigDecimal 比较。根据此方法,值相等但具有不同标度的两个 BigDecimal 对象(如,2.02.00)被认为是相等的。
相对六个 boolean 比较运算符 (<, ==, >, >=, !=, <=) 中每一个运算符的各个方法,优先提供此方法。建议使用以下语句执行上述比较:(x.compareTo(y) <op> 0),其中 <op> 是六个比较运算符之一。

指定者:
接口 Comparable<BigDecimal> 中的 compareTo
参数:
val - 将此 BigDecimal 与之比较的 BigDecimal。
返回:
当此 BigDecimal 在数字上小于、等于或大于 val 时,返回 -101

参考代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
double a = 100.1234568745;
double b = 2000.567878454;
BigDecimal bda = new BigDecimal(a);
BigDecimal bdb = new BigDecimal(b);

if(bda.compareTo(bdb) == -1) {
a < b
}
else if(bda.compareTo(bdb) == 0) {
a == b;
}
else {
a > b;
}
文章目录