java – 当我使用BigDecimal时为什么我的操作不起作用?

前端之家收集整理的这篇文章主要介绍了java – 当我使用BigDecimal时为什么我的操作不起作用?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试使用BigDecimal进行操作,但它总是返回0.当我使用double时,为什么它可以工作?
public static void main(String[] args) {
    double a = 3376.88;
    BigDecimal b = new BigDecimal(a);
    System.out.println(a-a/1.05);
    System.out.println(b.subtract(b).divide(new BigDecimal(1.05)).doubleValue());
}

谢谢.

解决方法

您没有执行相同的操作.

当您执行双操作时,正常的Java操作顺序正在应用:

a-a/1.05  
= a - (a/1.05)

但是当您在BigDecimal上运行方法时,操作将按您调用它们的顺序进行评估,因此

b.subtract(b).divide(new BigDecimal(1.05))

相当于

(b - b) / 1.05
= 0 / 1.05
= 0

猜你在找的Java相关文章