【问题标题】:Advanced rounding options with BigDecimalBigDecimal 的高级舍入选项
【发布时间】:2011-06-27 16:48:16
【问题描述】:

我正在编写一个程序,该程序必须对非常大且精确的数字进行舍入(可能比 double 处理的有效数字多得多),并且正在使用 BigDecimals。

有没有办法根据位置而不是有效数字进行 BigDecimal 舍入?

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

【问题讨论】:

    标签: java decimal bigdecimal rounding significant-digits


    【解决方案1】:

    怀疑你想要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);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2014-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-13
      • 1970-01-01
      相关资源
      最近更新 更多