BigDecimal double构造器丢失精度
分别用double构造器和String构造器构造两个BigDecimal
//double构造器
BigDecimal d1=new BigDecimal(1234.57);
//String构造器
BigDecimal d2=new BigDecimal("1234.57");
System.out.println(d1);
System.out.println(d1.toString());
System.out.println(d2);
System.out.println(d2.toString());
输出结果
1234.569999999999936335370875895023345947265625
1234.569999999999936335370875895023345947265625
1234.57
1234.57
由于double的精度确实导致两个数并不相同,后续调用equels和compareTo方法都返回false。
System.out.println(d1.equals(d2));
System.out.println(d1.compareTo(d2));
false
-1