关于DecimalFormat的一系列的取舍原则

代码向导 毕业设计 1
public static void main (String[] args)
{
        DecimalFormat fmt=new DecimalFormat(“0.#”);
        double a=3.25,b=3.75;
        System.out.println(fmt.format(a));
        System.out.println(fmt.format(b));
}



为什么打印结果是3.2和3.8?
DecimalFormat的取舍原则是什么?

回复

共2条回复 我来回复
  • 源码客栈
    这个人很懒,什么都没有留下~
    评论

    DecimalFormat 默认使用的是进位方式是HALF_EVEN,有点坑,规律就是看进舍位的前一位是奇数还是偶数 奇数:四舍五入 偶数:五舍六入 如3.25 保存一位小数,进舍位前一位是2,2是偶数,五舍六入 结果就是3.2,如果是3.26 结果就是3.3 再如3.75 保存一位小数 进舍位前一位是7,7是奇数,四舍五入 结果就是3.8

    如果想实现四舍五入,增加下面代码,切换进位方式 fmt.setRoundingMode(RoundingMode.HALF_UP);

    public static void main(String[] args) {
            DecimalFormat fmt=new DecimalFormat("0.#");
            fmt.setRoundingMode(RoundingMode.HALF_UP);
            double a=3.25,b=3.75;
            System.out.println(fmt.format(a));
            System.out.println(fmt.format(b));
        }
    
    0条评论
  • 源码港湾
    这个人很懒,什么都没有留下~
    评论

    DecimalFormat有个坑,如果小数点后第一位是偶数,后面的不会进位,如果小数点后第一位是奇数,后面的才会进位

    0条评论

发表回复

登录后才能评论