考虑一下简单的测试类:
import java.math.BigDecimal;
/**
* @author The Elite Gentleman
*
*/
public class Main {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
BigDecimal x = new BigDecimal("1");
BigDecimal y = new BigDecimal("1.00");
System.out.println(x.equals(y));
System.out.println(x.compareTo(y) == 0 ? "true": "false");
}
}
您可以(有意识地)说x
等于y
(而不是对象引用),但是当您运行该程序时,会显示以下结果:
false
true
问:compareTo()
和equals()
在BigDecimal
中有什么不同,compareTo
可以确定x
等于y
PS:我看到BigDecimal在equals()
方法上有一个inflate()
方法。inflate()
到底是做什么的?
发布于 2019-12-11 14:32:19
我相信正确的答案应该是使这两个数字(BigDecimals)具有相同的比例,然后我们就可以决定它们是否相等。例如,这两个数字是否相等?
1.00001 and 1.00002
嗯,这取决于规模。在刻度为5 (5个小数点)时,它们是不同的。但在较小的小数精度(4级及更低)上,它们被认为是相等的。因此,我建议将两个数字的比例相等,然后进行比较。
发布于 2017-09-15 19:39:15
您还可以与双精度值进行比较
BigDecimal a= new BigDecimal("1.1"); BigDecimal b =new BigDecimal("1.1");
System.out.println(a.doubleValue()==b.doubleValue());
https://stackoverflow.com/questions/6787142
复制相似问题