Расширенные возможности округления с BigDecimal - PullRequest
1 голос
/ 27 июня 2011

Я пишу программу, которая должна округлять очень большие и точные числа (возможно, намного больше значащих цифр, чем может обработать даже двойная), и использую BigDecimals.

Есть ли способ сделать BigDecimal округленным на основена месте и не значащие цифры?

То есть мне нужно 0,5 для округления до 1 и 0,4 до округления до 0, но, поскольку они представляют собой одинаковое количество значащих цифр, BigDecimal отказывается округлять любую из них.

1 Ответ

5 голосов
/ 27 июня 2011

Я Подозреваю Вы хотите 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);
    }
}
...