BigDecimal equals()与compareTo()?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (16)

考虑简单的测试类:

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()BigDecimalcompareTo可以确定x等于y

提问于
用户回答回答于

equals()方法的JavaDoc

compareTo此不同的是,这种方法BigDecimal只有在两个对象的值和比例相等时才考虑两个对象(因此,通过这种方法进行比较时,2.0不等于2.00)。

换句话说:equals()检查BigDecimal对象在每个方面是否完全相同。“仅”比较它们的数字值。compareTo()

用户回答回答于

基本上,如果需要inflate()调用BigInteger.valueOf(intCompact),即创建存储为BigIntegerfrom 的未缩放值long intCompact。如果你不需要这个,BigInteger并且非标度值适合a long BigDecimal似乎尽可能地节省空间。

扫码关注云+社区