关于java:BigDecimalsetScale用法总结

41次阅读

共计 1886 个字符,预计需要花费 5 分钟才能阅读完成。

BigDecimal.setScale 次要用于对 BigDecimal 数据小数点后的位数进行 进位、舍位、截断等操作

BigDecimal 应用阐明

  1. 不倡议,会造成精度损失
BigDecimal num1 = new BigDecimal(2.222222);
  1. 不倡议,尽管不会损失精度
BigDecimal num2 = new BigDecimal(2);
  1. 倡议,应用字符串格局结构,不会损失精度
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 进位解决,不论前面数字的大小 
  1. ROUND_DOWN = 1
BigDecimal b = new BigDecimal("2.222222").setScale(2, BigDecimal.ROUND_DOWN); 
 
System.out.println(b); //2.22 去掉多余的位数,不论前面数字的大小 
  1. 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
  1. 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
  1. 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 进位)
  1. 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 进位)
  1. 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
  1. ROUND_UNNECESSARY = 7
BigDecimal b = new BigDecimal("2.22").setScale(3, BigDecimal.ROUND_UNNECESSARY); 
 
System.out.println(b); // Scale 位数 必须小于等于 小数位数,否则会抛异样:java.lang.ArithmeticException: Rounding necessary

原文链接:https://blog.csdn.net/HiJames…

正文完
 0