BigDecimal“等于”比较值和小数位数。如果只想比较值(0 == 0.0),则应使用compareTo:
BigDecimal.ZERO.compareTo(BigDecimal.valueOf(0.0)) == 0 //trueBigDecimal.ZERO.compareTo(BigDecimal.valueOf(0)) == 0 //true
参见javadoc。
至于Double比较,如其他答案所述,您正在将Double与Integer进行比较
newDouble(0.0).equals(0),这
false是因为对象具有不同的类型而返回。作为参考,JDK
7中equals方法的代码为:
public boolean equals(Object obj) { return (obj instanceof Double)&& (doubleToLongBits(((Double)obj).value) == doubleToLongBits(value));}就您而言,
(obj instanceof Double)是错误的。



