发布于2021-01-01 16:18 阅读(1536) 评论(0) 点赞(23) 收藏(4)
BigDecimal.setScale主要用于对BigDecimal数据小数点后的位数进行 进位、舍位、截断等操作
BigDecimal使用说明
1. 不建议,会造成精度损失
BigDecimal num1 = new BigDecimal(2.222222);
2. 不建议,虽然不会损失精度
BigDecimal num2 = new BigDecimal(2);
3. 建议,使用字符串格式构造,不会损失精度
BigDecimal num = new BigDecimal("2.222222");
BigDecimal Rounding Modes
1. ROUND_UP = 0
- BigDecimal b = new BigDecimal("2.222222").setScale(2, BigDecimal.ROUND_UP);
-
- System.out.println(b); //2.23 进位处理,不管后面数字的大小
2. ROUND_DOWN = 1
- BigDecimal b = new BigDecimal("2.222222").setScale(2, BigDecimal.ROUND_DOWN);
-
- System.out.println(b); //2.22 去掉多余的位数,不管后面数字的大小
-
3. ROUND_CEILING = 2
- BigDecimal b = new BigDecimal("2.222222").setScale(2, BigDecimal.ROUND_CEILING);
-
- System.out.println(b);//2.23 如果是正数,相当于BigDecimal.ROUND_UP
-
- BigDecimal b = new BigDecimal("-2.222222").setScale(2, BigDecimal.ROUND_CEILING);
-
- System.out.println(b);//-2.22 如果是负数,相当于BigDecimal.ROUND_DOWN
-
4. ROUND_FLOOR = 3
- BigDecimal b = new BigDecimal("2.222222").setScale(2, BigDecimal.ROUND_FLOOR);
-
- System.out.println(b);//2.22 如果是正数,相当于BigDecimal.ROUND_DOWN
-
-
- BigDecimal b = new BigDecimal("-2.222222").setScale(2, BigDecimal.ROUND_FLOOR);
-
- System.out.println(b);//-2.23 如果是负数,相当于BigDecimal.ROUND_HALF_UP
-
5. ROUND_HALF_UP = 4
- BigDecimal b = new BigDecimal("2.222222").setScale(2, BigDecimal.ROUND_HALF_UP);
-
- System.out.println("ROUND_HALF_UP" + b); //2.22 根据后面的数字四舍五入(大于等于 5进位)
-
6. ROUND_HALF_DOWN = 5
- BigDecimal b = new BigDecimal("2.222222").setScale(2, BigDecimal.ROUND_HALF_DOWN);
-
- System.out.println("ROUND_HALF_DOWN" + b);//2.22 根据后面的数字四舍五入(大于 5进位)
-
7. ROUND_HALF_EVEN = 6
- BigDecimal b = new BigDecimal("2.222222").setScale(2, BigDecimal.ROUND_HALF_EVEN);
-
- System.out.println(b);//2.22 如果舍弃部分左边的数字为偶数,则作 ROUND_HALF_DOWN
-
- BigDecimal b = new BigDecimal("2.222222").setScale(2, BigDecimal.ROUND_HALF_EVEN);
-
- System.out.println(b);//2.22 如果舍弃部分左边的数字为奇数,则作 ROUND_HALF_UP
-
8. ROUND_UNNECESSARY = 7
- BigDecimal b = new BigDecimal("2.22").setScale(3, BigDecimal.ROUND_UNNECESSARY);
-
- System.out.println(b); // Scale位数 必须小于等于 小数位数,否则会抛异常:
-
- java.lang.ArithmeticException: Rounding necessary
-
链接:http://www.javaheidong.com/blog/article/45890/a3cec7f7194540be0389/
来源:java黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 java黑洞网 All Rights Reserved 版权所有,并保留所有权利。京ICP备18063182号-2
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!