2

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

有没有办法根据位置而不是有效数字进行 BigDecimal 回合?

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

4

1 回答 1

6

怀疑你想要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);
    }
}
于 2011-06-27T16:53:58.357 回答