如何解决当 BigDecimal 类型先除法然后乘法时,为什么结果与预期不同爪哇
问题: 使用 BigDecimal 进行涉及除法的多个计算时。用小数很难理解。
例如:
1/3*3
我们期望是 1
但是当您使用 BigDecimal 时。
我们得到 ArithmeticException
如果我为divide方法添加roundingMode。
我们得到 0.9999999999999
float result1 = 1f / 3f * 3f;
BigDecimal one = BigDecimal.valueOf(1);
BigDecimal three = BigDecimal.valueOf(3);
BigDecimal result2 = one.divide(three,64,BigDecimal.ROUND_HALF_UP).multiply(three);
System.out.println(result1);
System.out.println(result2);
输出
1.0
0.9999999999999999999999999999999999999999999999999999999999999999
我知道这个问题与舍入模式有关,但我不知道如何解决这个问题
如果您能帮助提出解决方案,非常感谢。
ps:我的英文不好,应该可以看的,抱歉:)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。