程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

【Java】BigDecimal.setScale用法总结

发布于2021-01-01 16:18     阅读(1412)     评论(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

  1. BigDecimal b = new BigDecimal("2.222222").setScale(2, BigDecimal.ROUND_UP);
  2. System.out.println(b); //2.23 进位处理,不管后面数字的大小

2. ROUND_DOWN = 1

  1. BigDecimal b = new BigDecimal("2.222222").setScale(2, BigDecimal.ROUND_DOWN);
  2. System.out.println(b); //2.22 去掉多余的位数,不管后面数字的大小

3. ROUND_CEILING = 2

  1. BigDecimal b = new BigDecimal("2.222222").setScale(2, BigDecimal.ROUND_CEILING);
  2. System.out.println(b);//2.23 如果是正数,相当于BigDecimal.ROUND_UP
  3. BigDecimal b = new BigDecimal("-2.222222").setScale(2, BigDecimal.ROUND_CEILING);
  4. System.out.println(b);//-2.22 如果是负数,相当于BigDecimal.ROUND_DOWN

4. ROUND_FLOOR = 3

  1. BigDecimal b = new BigDecimal("2.222222").setScale(2, BigDecimal.ROUND_FLOOR);
  2. System.out.println(b);//2.22 如果是正数,相当于BigDecimal.ROUND_DOWN
  3. BigDecimal b = new BigDecimal("-2.222222").setScale(2, BigDecimal.ROUND_FLOOR);
  4. System.out.println(b);//-2.23 如果是负数,相当于BigDecimal.ROUND_HALF_UP

5. ROUND_HALF_UP = 4

  1. BigDecimal b = new BigDecimal("2.222222").setScale(2, BigDecimal.ROUND_HALF_UP);
  2. System.out.println("ROUND_HALF_UP" + b); //2.22 根据后面的数字四舍五入(大于等于 5进位)

6. ROUND_HALF_DOWN = 5

  1. BigDecimal b = new BigDecimal("2.222222").setScale(2, BigDecimal.ROUND_HALF_DOWN);
  2. System.out.println("ROUND_HALF_DOWN" + b);//2.22 根据后面的数字四舍五入(大于 5进位)

7. ROUND_HALF_EVEN = 6

  1. BigDecimal b = new BigDecimal("2.222222").setScale(2, BigDecimal.ROUND_HALF_EVEN);
  2. System.out.println(b);//2.22 如果舍弃部分左边的数字为偶数,则作 ROUND_HALF_DOWN
  3. BigDecimal b = new BigDecimal("2.222222").setScale(2, BigDecimal.ROUND_HALF_EVEN);
  4. System.out.println(b);//2.22 如果舍弃部分左边的数字为奇数,则作 ROUND_HALF_UP

8. ROUND_UNNECESSARY = 7

  1. BigDecimal b = new BigDecimal("2.22").setScale(3, BigDecimal.ROUND_UNNECESSARY);
  2. System.out.println(b); // Scale位数 必须小于等于 小数位数,否则会抛异常:
  3. java.lang.ArithmeticException: Rounding necessary

 



所属网站分类: 技术文章 > 博客

作者:java是世界上最好的语言

链接:http://www.javaheidong.com/blog/article/45890/a3cec7f7194540be0389/

来源:java黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

23 0
收藏该文
已收藏

评论内容:(最多支持255个字符)