BigDecimal的高级舍入选项

don*_*ton 1 java decimal rounding significant-digits bigdecimal

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

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

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

Jon*_*eet 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);
    }
}
Run Code Online (Sandbox Code Playgroud)