BigDecimal.setScale主要用于对BigDecimal数据小数点后的位数进行 进位、舍位、截断等操作
BigDecimal使用说明
- 不建议,会造成精度损失
BigDecimal num1 = new BigDecimal(2.222222);
- 不建议,虽然不会损失精度
BigDecimal num2 = new BigDecimal(2);
- 建议,使用字符串格式构造,不会损失精度
BigDecimal num = new BigDecimal("2.222222");
BigDecimal Rounding Modes
- ROUND_UP = 0
BigDecimal b = new BigDecimal("2.222222").setScale(2, BigDecimal.ROUND_UP);
System.out.println(b); //2.23 进位处理,不管后面数字的大小
- ROUND_DOWN = 1
BigDecimal b = new BigDecimal("2.222222").setScale(2, BigDecimal.ROUND_DOWN);
System.out.println(b); //2.22 去掉多余的位数,不管后面数字的大小
- 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
- 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
- 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进位)
- 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进位)
- 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
- 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://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。