gpt4 book ai didi

java - BigDecimal 和 MathContext 的不一致行为

转载 作者:行者123 更新时间:2023-11-30 08:18:31 25 4
gpt4 key购买 nike

我看到 BigDecimal 有一些奇怪的行为当我使用 mathContext 进行除法时,输出与我通过直接提供比例和舍入模式进行除法时的输出不同这是我认为应该提供相同输出的示例

public static void main(String...args){
MathContext mc = new MathContext(3,RoundingMode.HALF_UP);
BigDecimal four = new BigDecimal(4);
BigDecimal three = new BigDecimal(3);
System.out.println(four.divide(three,3,RoundingMode.HALF_UP));
System.out.println(four.divide(three,mc));
}

输出:

1.333
1.33

使用 MathContext 时,比例尺似乎有所不同。或者我不明白什么时候使用哪个。

最佳答案

BigDecimaldivide 方法允许您指定结果的scale,笼统地说就是小数位数。 scale = 3 表示一个数字将以 3 位小数表示。负比例表示整数末尾无意义零的数量 - 例如,要四舍五入到最接近的 1000,您可以指定 scale = -3

four.divide(three,3,RoundingMode.HALF_UP);  // scale = 3, so round to 3 decimal places

但是 MathContext 是不同的。它允许您指定精度 - 即有效位数。这不同于规模

MathContext mc = new MathContext(3,RoundingMode.HALF_UP);
four.divide(three, mc); // precision = 3, so round to 3 significant figures

关于java - BigDecimal 和 MathContext 的不一致行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27557590/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com