加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-14 23:36:00 所属栏目:Java 来源:网络整理
导读:我正在尝试使用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
我正在尝试使用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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读