gpt4 book ai didi

Java BigDecimal.round()

转载 作者:搜寻专家 更新时间:2023-11-01 01:49:48 26 4
gpt4 key购买 nike

我正在尝试使用以下代码将 BigDecimal 值四舍五入到最接近的 1000

BigDecimal oldValue = new BigDecimal("791232");

BigDecimal newValue=oldValue.round(new MathContext(3,
RoundingMode.UP));

System.out.println("Old ------- "+oldValue.intValue());
System.out.println("New------- "+newValue.intValue());

这适用于上述输入。结果如下

Old------>791232

New------>792000

但代码不适用于输入< 1,00,000(例如 79123)并输入 > 10,00,000(例如 7912354)

Actual and Expected Result

还有一点注意到,如果我们将精度从 3 更改为 2,如下所示

new MathContext(2,RoundingMode.UP)

然后它适用于输入 < 1,00,000。

请帮忙

最佳答案

不需要除以/乘以 1000,你只是忘记了 set the scale

oldValue.setScale(0, RoundingMode.UP);

之后代码就如你所愿地工作了:

BigDecimal oldValue = new BigDecimal("79123");
oldValue = oldValue.setScale(0, RoundingMode.UP);
BigDecimal newValue = oldValue.round(new MathContext(3, RoundingMode.UP));

System.out.println("Old ------- " + oldValue.intValue());
System.out.println("New------- " + newValue.intValue());

输出:

Old ------- 79123

New------- 79200

Old ------- 7912113

New------- 7920000

关于Java BigDecimal.round(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42901582/

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