我正在尝试使用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());
}
@H_
403_4@谢谢.
您没有执行相同的操作.
@H_
403_4@当您执行双操作时,正常的Java操作顺序正在应用:
a-a/1.05
= a - (a/1.05)
@H_
403_4@但是当您在BigDecimal上运行
方法时,操作将按您
调用它们的顺序进行评估,因此
b.subtract(b).divide(new BigDecimal(1.05))
@H_
403_4@相当于
(b - b) / 1.05
= 0 / 1.05
= 0
原文链接:https://www.f2er.com/java/127505.html