我正在编写一个程序,必须对非常大且精确的数字进行舍入(可能比 double 可以处理的有效数字要多得多),并且正在使用 BigDecimals。
有没有办法根据位置而不是有效数字对 BigDecimal 进行舍入?
也就是说,我需要 0.5 舍入为 1,需要 0.4 舍入为 0,但由于它们的有效数字数量相同,BigDecimal 拒绝对其中任何一个进行舍入。
最佳答案
我怀疑你想要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);
}
}
关于java - BigDecimal 的高级舍入选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6496156/