使用BigDecimal的高级舍入选项



我正在编写一个程序,该程序必须对非常大且精确的数字进行四舍五入(可能比双精度数字处理的有效数字多得多),并且正在使用BigDecimals。

有没有一种方法可以使BigDecimal根据位置而不是重要数字进行舍入?

也就是说,我需要0.5来舍入到1,需要0.4来舍入到0,但由于它们是相同数量的有效数字,BigDecimal拒绝对其中任何一个进行舍入。

I怀疑您想要setScale:

import java.math.*;
public class Test
{
    public static void main(String[] args)
    {
        showRounded(new BigDecimal("0.4"));
        showRounded(new BigDecimal("0.5"));
    }
    static void showRounded(BigDecimal input)
    {
        BigDecimal output = input.setScale(0, BigDecimal.ROUND_HALF_UP);
        System.out.println(input + " => " + output);
    }
}

最新更新