1. BigDecimal num1 = new BigDecimal(2.225667);//这种写法不允许,会造成精度损失

2. BigDecimal num2 = new BigDecimal(2);//这种写法是可以的

3. BigDecimal num = new BigDecimal("2.225667");//一般都会这样写最好

4. int count = num.scale();

System.out.println(count);//6 返回的是小数点后位数

好了,下面开始正式介绍知识点啦~~~~~~

1. ROUND_DOWN

BigDecimal b = new BigDecimal("2.225667").setScale(2, BigDecimal.ROUND_DOWN);

System.out.println(b);//2.22 直接去掉多余的位数

2. ROUND_UP

BigDecimal c = new BigDecimal("2.224667").setScale(2, BigDecimal.ROUND_UP);

System.out.println(c);//2.23 跟上面相反,进位处理

3. ROUND_CEILING

天花板(向上),正数进位向上,负数舍位向上

BigDecimal f = new BigDecimal("2.224667").setScale(2, BigDecimal.ROUND_CEILING);

System.out.println(f);//2.23 如果是正数,相当于BigDecimal.ROUND_UP

BigDecimal g = new BigDecimal("-2.225667").setScale(2, BigDecimal.ROUND_CEILING);

System.out.println(g);//-2.22 如果是负数,相当于BigDecimal.ROUND_DOWN

4. ROUND_FLOOR

地板(向下),正数舍位向下,负数进位向下

BigDecimal h = new BigDecimal("2.225667").setScale(2, BigDecimal.ROUND_FLOOR);

System.out.println(h);//2.22 如果是正数,相当于BigDecimal.ROUND_DOWN

BigDecimal i = new BigDecimal("-2.224667").setScale(2, BigDecimal.ROUND_FLOOR);

System.out.println(i);//-2.23 如果是负数,相当于BigDecimal.ROUND_HALF_UP

5. ROUND_HALF_UP

BigDecimal d = new BigDecimal("2.225").setScale(2, BigDecimal.ROUND_HALF_UP);

System.out.println("ROUND_HALF_UP"+d); //2.23 四舍五入(若舍弃部分>=.5,就进位)

6. ROUND_HALF_DOWN

BigDecimal e = new BigDecimal("2.225").setScale(2, BigDecimal.ROUND_HALF_DOWN);

System.out.println("ROUND_HALF_DOWN"+e);//2.22 四舍五入(若舍弃部分>.5,就进位)

7. ROUND_HALF_EVEN

BigDecimal j = new BigDecimal("2.225").setScale(2, BigDecimal.ROUND_HALF_EVEN);

System.out.println(j);//2.22 如果舍弃部分左边的数字为偶数,则作 ROUND_HALF_DOWN

BigDecimal k = new BigDecimal("2.215").setScale(2, BigDecimal.ROUND_HALF_EVEN);

System.out.println(k);//2.22 如果舍弃部分左边的数字为奇数,则作 ROUND_HALF_UP

System.out.println("************************************");

System.out.println("4.05: "+new BigDecimal("4.05").setScale(1, BigDecimal.ROUND_HALF_EVEN));//4.05: 4.0 down

System.out.println("4.15: "+new BigDecimal("4.15").setScale(1, BigDecimal.ROUND_HALF_EVEN));//4.15: 4.2 up

System.out.println("4.25: "+new BigDecimal("4.25").setScale(1, BigDecimal.ROUND_HALF_EVEN));//4.25: 4.2 down

System.out.println("4.35: "+new BigDecimal("4.35").setScale(1, BigDecimal.ROUND_HALF_EVEN));//4.35: 4.4 up

System.out.println("4.45: "+new BigDecimal("4.45").setScale(1, BigDecimal.ROUND_HALF_EVEN));//4.45: 4.4 down

System.out.println("4.55: "+new BigDecimal("4.55").setScale(1, BigDecimal.ROUND_HALF_EVEN));//4.55: 4.6 up

System.out.println("4.65: "+new BigDecimal("4.65").setScale(1, BigDecimal.ROUND_HALF_EVEN));//4.65: 4.6 down

System.out.println("3.05: "+new BigDecimal("3.05").setScale(1, BigDecimal.ROUND_HALF_EVEN));//3.05: 3.0 down

System.out.println("3.15: "+new BigDecimal("3.15").setScale(1, BigDecimal.ROUND_HALF_EVEN));//3.15: 3.2 up

System.out.println("3.25: "+new BigDecimal("3.25").setScale(1, BigDecimal.ROUND_HALF_EVEN));//3.25: 3.2 down

System.out.println("3.35: "+new BigDecimal("3.35").setScale(1, BigDecimal.ROUND_HALF_EVEN));//3.35: 3.4 up

System.out.println("3.45: "+new BigDecimal("3.45").setScale(1, BigDecimal.ROUND_HALF_EVEN));//3.45: 3.4 down

System.out.println("3.55: "+new BigDecimal("3.55").setScale(1, BigDecimal.ROUND_HALF_EVEN));//3.55: 3.6 up

System.out.println("3.65: "+new BigDecimal("3.65").setScale(1, BigDecimal.ROUND_HALF_EVEN));//3.65: 3.6 down

8.ROUND_UNNECESSARY

BigDecimal l = new BigDecimal("2.215").setScale(3, BigDecimal.ROUND_UNNECESSARY);

System.out.println(l);

//断言请求的操作具有精确的结果,因此不需要舍入。

//如果对获得精确结果的操作指定此舍入模式,则抛出ArithmeticException。

setscale方法的用法_BigDecimal.setScale用法总结相关推荐

  1. BigDecimal中divide方法与setScale方法详解

    BigDecimal中divide方法详解 1.首先说一下用法,BigDecimal中的divide主要就是用来做除法的运算.其中有这么一个方法. public BigDecimal divide(B ...

  2. setscale方法的用法_BigDecimal的setScale()方法无效

    最近在使用BigDecimal进行四舍五入时,发现setScale()方法设置的精度值并没有起作用,一度让我怀疑起是否jdk有bug,代码如下: 错误代码 double d = 7.199999999 ...

  3. BigDecimal类setScale方法问题:算数异常,精确度丢失-ArithmeticException: Rounding necessary

    BigDecimal类setScale方法问题:算数异常,精确度丢失-ArithmeticException: Rounding necessary 在运行如下代码时, package BigDeci ...

  4. java中equals方法的用法以及==的用法(转)

    2019独角兽企业重金招聘Python工程师标准>>> equals 方法是 java.lang.Object 类的方法. 有两种用法说明: (1)对于字符串变量来说,使用" ...

  5. BigDecimal类 setScale()方法java.lang.ArithmeticException: Rounding necessary

    BigDecimal调用setScale方法时,当未设置舍入模式时,系统会给个默认ROUND_UNNECESSARY(int 值为7)值,如果小数点后不为零,而且要保留的小数位数小于旧小数位数,那么此 ...

  6. BigDecimal.setScale方法

    BigDecimal.setScale()方法用于格式化小数点 BigDecimal.setScale(1)表示保留一位小数,默认用四舍五入方式  BigDecimal.setScale(1,BigD ...

  7. BigDecimal.setScale()方法实用技巧

    方法使用 scale() 方法用于格式化小数点 setScale(1,BigDecimal.ROUND_DOWN) 直接删除多余的小数位,如2.35会变成2.3 setScale(1,BigDecim ...

  8. Java setScale方法保留n位小数

    使用java.math.BigDecimal类的setScale方法可以设置任意方式的舍入. 方法声明: public BigDecimal setScale​(int newScale, Round ...

  9. C语言task的用法,C# Task 用法

    C# Task 的用法 其实Task跟线程池ThreadPool的功能类似,不过写起来更为简单,直观.代码更简洁了,使用Task来进行操作.可以跟线程一样可以轻松的对执行的方法进行控制. 顺便提一下, ...

最新文章

  1. 如何在SAP云平台上使用MongoDB服务
  2. 关于python赋值语句下列选项中描述正确的是_关于Python的分支结构,以下选项中描述正确的是()。...
  3. Ansible搭建hadoop3.1.3高可用集群
  4. UVA - 817According to Bartjens
  5. centos8启动docker-mysql8容器
  6. mongoose 更新元素 DeprecationWarning: collection.update is deprecated. Use updateOne, updateMany
  7. 用numpy,matplotlib库画笛卡尔爱心曲线
  8. 女生可以学计算机应用吗,我是女生 学计算机应用技术还是软体技术
  9. 用Python实现应用Last-Modified和ETag避免下载重复内容
  10. WPS Office 国际版 添加中文语言包 及相关问题
  11. 微信小程序下拉刷新在真机上不回缩问题的解决方法
  12. 本文介绍在Wireshark网络协议分析仪中如果解密SSL和TLS流量
  13. 金融知识小科普 - 金融杠杆
  14. 针对Informer中时序数据ETT油温数据分析
  15. etc的常见算法_几个常用算法的适应场景及其优缺点(非常好)
  16. 如何将乱码转化为UTF-8
  17. 2023年4月动漫新番最新资讯已公布52部!
  18. 扇贝python编程课 百度云,扇贝编程python课程分享
  19. JavaCV依赖精简
  20. DSP TMS320F280049之模拟比较器CMPSS(寄存器版)

热门文章

  1. php 爬虫ip被封,服务器反爬虫攻略Nginx/PHP禁止某些User Agent抓取网站
  2. EDK2-201903 BIOS 入门
  3. HTTP与HTTTPS的区别
  4. Chrome浏览器插件推荐【第一期】
  5. 空气压缩机广泛的工业设备及其重要地位
  6. MySQL数据批量删除语句
  7. Linux Make 命令详解
  8. jenkins+阿里code配置vue项目自动部署
  9. 几种常用接口调用方式
  10. 如何在eclipse中安装genymotion插件