BigDecimal.setScale方法的功能简介说明

乔欣 Java经验 发布时间:2022-12-20 15:55:50 阅读数:14778 1
下文笔者讲述BigDecimal.setScale方法的功能简介说明,如下所示

BigDecimal.setScale方法的功能

BigDecimal.setScale的功能:
   对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
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaJingYan/202212/16715229785196.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者