BigDecimal的高级舍入选项

时间:2011-06-27 16:48:16

标签: java decimal bigdecimal rounding significant-digits

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

有没有办法根据地点而不是有效数字来制作BigDecimal?

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

1 个答案:

答案 0 :(得分:5)

怀疑你想要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);
    }
}