BigDecimal.setScale用法总结(固定精度)

BigDecimal.setScale用法总结(固定精度)BigDecimal.setScale(intnewScale,introundingMode)newScale:保留newScale位小数roundingMode:舍去规则(0<=roundingMode<=7)一、BigDecimal.ROUND_DOWNBigDecimalnum=newBigDecimal(“3.16159”);//…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

BigDecimal.setScale(int newScale, int roundingMode)

newScale: 保留newScale位小数
roundingMode: 舍去规则(0 <= roundingMode <= 7)

一、BigDecimal.ROUND_DOWN

BigDecimal num = new BigDecimal("3.16159");
// 直接舍去多余的位数,不进行四舍五入
System.out.println(num.setScale(1, BigDecimal.ROUND_DOWN)); // 3.1
System.out.println(num.setScale(2, BigDecimal.ROUND_DOWN)); // 3.16

二、BigDecimal.ROUND_UP

BigDecimal num = new BigDecimal("3.161590");
// 进位处理,不进行四舍五入(精度后的位数是0不进位)
System.out.println(num.setScale(1, BigDecimal.ROUND_UP)); // 3.2
System.out.println(num.setScale(2, BigDecimal.ROUND_UP)); // 3.17
System.out.println(num.setScale(5, BigDecimal.ROUND_UP)); // 3.16159

三、BigDecimal.ROUND_CEILING

BigDecimal num = new BigDecimal("3.161590");
// 天花板(向上),正数进位向上,同ROUND_UP
System.out.println(num.setScale(1, BigDecimal.ROUND_CEILING)); // 3.2
System.out.println(num.setScale(2, BigDecimal.ROUND_CEILING)); // 3.17
System.out.println(num.setScale(5, BigDecimal.ROUND_CEILING)); // 3.16159
BigDecimal num = new BigDecimal("-3.161590");
// 天花板(向上),负数舍位向上,同ROUND_DOWN
System.out.println(num.setScale(1, BigDecimal.ROUND_CEILING)); // -3.1
System.out.println(num.setScale(2, BigDecimal.ROUND_CEILING)); // -3.16
System.out.println(num.setScale(5, BigDecimal.ROUND_CEILING)); // -3.16159

四、BigDecimal.ROUND_FLOOR

BigDecimal num = new BigDecimal("3.161590");
// 地板(向下),正数舍位向下
System.out.println(num.setScale(1, BigDecimal.ROUND_FLOOR)); // 3.1
System.out.println(num.setScale(2, BigDecimal.ROUND_FLOOR)); // 3.16
BigDecimal num = new BigDecimal("-3.161590");
// 地板(向下),负数进位向下
System.out.println(num.setScale(1, BigDecimal.ROUND_FLOOR)); // -3.2
System.out.println(num.setScale(2, BigDecimal.ROUND_FLOOR)); // -3.17

五、BigDecimal.ROUND_HALF_UP

BigDecimal num = new BigDecimal("3.161590");
// 正常四舍五入
System.out.println(num.setScale(1, BigDecimal.ROUND_HALF_UP)); // 3.2
System.out.println(num.setScale(2, BigDecimal.ROUND_HALF_UP)); // 3.16

六、BigDecimal.ROUND_HALF_DOWN

BigDecimal num = new BigDecimal("3.161500");
// 四舍五入(若舍弃部分>.5,就进位)
System.out.println(num.setScale(1, BigDecimal.ROUND_HALF_DOWN)); // 3.2
System.out.println(num.setScale(2, BigDecimal.ROUND_HALF_DOWN)); // 3.16
System.out.println(num.setScale(3, BigDecimal.ROUND_HALF_DOWN)); // 3.161
num = new BigDecimal("3.161590");
// .590 > .5
System.out.println(num.setScale(3, BigDecimal.ROUND_HALF_DOWN)); // 3.162

七、BigDecimal.ROUND_HALF_EVEN

BigDecimal num = new BigDecimal("3.46159");
// 如果舍弃部分左边的数字为偶数,则作 ROUND_HALF_DOWN
System.out.println(num.setScale(1, BigDecimal.ROUND_HALF_EVEN)); // 3.5
System.out.println(num.setScale(2, BigDecimal.ROUND_HALF_EVEN)); // 3.46
BigDecimal num = new BigDecimal("3.37459");
// 如果舍弃部分左边的数字为奇数,则作 ROUND_HALF_UP
System.out.println(num.setScale(1, BigDecimal.ROUND_HALF_EVEN)); // 3.4
System.out.println(num.setScale(2, BigDecimal.ROUND_HALF_EVEN)); // 3.37

八、BigDecimal.ROUND_UNNECESSARY

BigDecimal num = new BigDecimal("3.37459");
// 断言请求的操作具有精确的结果
System.out.println(num.setScale(5, BigDecimal.ROUND_UNNECESSARY)); // 3.37459
System.out.println(num.setScale(2, BigDecimal.ROUND_UNNECESSARY)); // 抛出 ArithmeticException

如果有5位小数,那么指定舍5位的话,会正确输出结果。但是指定的位数不是num的位数,即不是5位,那么会抛出ArithmeticException异常,这样就可以检证num的小数位数。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/179948.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Pytest(6)重复运行用例pytest-repeat[通俗易懂]

    Pytest(6)重复运行用例pytest-repeat[通俗易懂]前言平常在做功能测试的时候,经常会遇到某个模块不稳定,偶然会出现一些bug,对于这种问题我们会针对此用例反复执行多次,最终复现出问题来。自动化运行用例时候,也会出现偶然的bug,可以针对单个用例,

    2022年7月30日
    11
  • rstudio安装后打不开_r语言和rstudio的安装

    rstudio安装后打不开_r语言和rstudio的安装1、r语言的下载地址TheComprehensiveRArchiveNetwork​cran.r-project.org2、安装:按着提醒直接下一步,路径不用改,默认的就可以,但是不可以出现中文,64位系统就全选,32位系统不能选64位系统,一个是32位一个是64位。3、下载RStudio安装包RStudio​www.rstudio.com免费的4、安装rstudio跟着提醒点击下一步,安…

    2022年6月27日
    321
  • jmeter并发不同请求_jmeter3000个并发怎么测

    jmeter并发不同请求_jmeter3000个并发怎么测Jmeter压力测试工具直接上图查询重复数据如下:selectcount(order_id),order_id,report_typefromt_mapping_order_reportgroupbyorder_id,report_typehavingcount(order_id)&gt;1解决方案:在两个列上添加唯…

    2022年9月27日
    0
  • 基于java的毕业设计参考文献_java毕业论文参考文献

    基于java的毕业设计参考文献_java毕业论文参考文献一年一度的毕业季,最令毕业生头疼的就是毕业设计以及撰写毕业论文,而毕业论文还需要加上多篇参考文献,有的老师对参考文献的要求是很多的,比如需要国内的和国外的,时间必须是近三年的,满足XXX要求的文献至少

    2022年8月5日
    3
  • 安装程序在计算机中识别出下列大容量存储设备「建议收藏」

    安装程序在计算机中识别出下列大容量存储设备「建议收藏」今天使用USB安装2003在一台lenovo笔记本发现提示安装程序在计算机中识别出下列大容量存储设备解决方案:BIOS硬盘更改为兼容oride即可 转载于:https://blog.51cto.com/vn98z/905299…

    2022年9月1日
    2
  • 导航栏滚动渐变效果 html+css+js

    导航栏滚动渐变效果 html+css+js先看效果:实现:1.定义导航栏的文字标签:<divclass=”tou”><sapnclass=”logo”>北极光。</sapn><ulclass=”biao”><li><ahref=”#”><ahref=”#”>主页</a></li><li><ahref=”#”>个人简介</

    2022年5月8日
    39

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号