java - BigDecimal 的高级舍入选项

标签 java decimal bigdecimal rounding significant-digits

我正在编写一个程序,必须对非常大且精确的数字进行舍入(可能比 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/

相关文章:

java - Spring安全登录页面?

java - 如何处理 SQL 查询 IN 子句中使用的可选参数

python - Python中小数点后的 float 加零

java - 将大十进制格式转换为美元形式的最佳方法是什么?

java - 在 Spring 中格式化 BigDecimal

java - 从任何地方访问 View 而不使用静态声明

java - GWT 中的异步调用是否会由于另一个需要很长时间才能完成的异步调用而被阻止

python - 将ast.Num转换为decimal.Decimal以获得python中的精度

c# - 如何接受 "$1,250.00"之类的字符串并将其转换为 C# 中的小数?

java - 如何用正确的输出计算java中的 double 值?