非常に大きくて正確な数値 (倍精度で処理できるよりもはるかに多くの有効桁数) を丸める必要があるプログラムを作成しており、BigDecimals を使用しています。
有効数字ではなく場所に基づいて BigDecimal を丸める方法はありますか?
つまり、1 に丸めるには 0.5 が必要で、0 に丸めるには 0.4 が必要ですが、これらは同じ有効数字であるため、BigDecimal はどちらも丸めることを拒否します。
非常に大きくて正確な数値 (倍精度で処理できるよりもはるかに多くの有効桁数) を丸める必要があるプログラムを作成しており、BigDecimals を使用しています。
有効数字ではなく場所に基づいて BigDecimal を丸める方法はありますか?
つまり、1 に丸めるには 0.5 が必要で、0 に丸めるには 0.4 が必要ですが、これらは同じ有効数字であるため、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);
}
}