关于Bigdecimal的小问题。

String num = "5.66";
        int jd1 = 0;
        int jd2 = 1;
        BigDecimal b1 = new BigDecimal(num).setScale(jd1, BigDecimal.ROUND_DOWN);
        BigDecimal b2 = new BigDecimal(num).setScale(jd1, BigDecimal.ROUND_HALF_DOWN);
        
        BigDecimal b3 = new BigDecimal(num).setScale(jd2, BigDecimal.ROUND_DOWN);
        BigDecimal b4 = new BigDecimal(num).setScale(jd2, BigDecimal.ROUND_HALF_DOWN);
        
        System.out.println("b1:" + b1);
        System.out.println("b2:" + b2);
        System.out.println("b3:" + b3);
        System.out.println("b4:" + b4);
        
        BigDecimal b5 = new BigDecimal(num).setScale(jd1, BigDecimal.ROUND_UP);
        BigDecimal b6 = new BigDecimal(num).setScale(jd1, BigDecimal.ROUND_HALF_UP);
        
        BigDecimal b7 = new BigDecimal(num).setScale(jd2, BigDecimal.ROUND_UP);
        BigDecimal b8 = new BigDecimal(num).setScale(jd2, BigDecimal.ROUND_HALF_UP);
        
        System.out.println("b5:" + b5);
        System.out.println("b6:" + b6);
        System.out.println("b7:" + b7);
        System.out.println("b8:" + b8);
运行结果:

b1:5
b2:6
b3:5.6
b4:5.7
b5:6
b6:6
b7:5.7
b8:5.7

结论:

BigDecimal.ROUND_DOWN:舍去多余小数位
官方解释:向零方向舍入的舍入模式。
BigDecimal.ROUND_HALF_DOWN:五舍六入
官方解释:向最接近数字方向舍入的舍入模式,如果与两个相邻数字的距离相等,则向下舍入。
BigDecimal.ROUND_UP:舍去多余小数位后最后一位+1
官方解释:远离零方向舍入的舍入模式。
BigDecimal.ROUND_HALF_UP:四舍五入
官方解释:向最接近数字方向舍入的舍入模式,如果与两个相邻数字的距离相等,则向上舍入。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 扶窗细听天水落, 拍枝打叶奔前程。 箭雨遥遥自天降, 我志昭昭凌云中。
    秒读阅读 1,837评论 0 16
  • 一朵蒲公英 灵动 像爱情 沉默 像星星 她随风浮远 只留下一瞬容颜
    希波克林阅读 1,193评论 2 3
  • 夜色很美 天空很灿烂 你的笑很甜 一只风筝 挣脱你缠绕的手 煽动蜻蜓的翅膀 飞向新娘的洞房 美在心底荡漾 心湖泛起...
    青明山阅读 4,145评论 13 33
  • test
    chongkalford阅读 1,409评论 0 0

友情链接更多精彩内容