BigDecimal.setScale()方法总结
常见写法
BigDecimal bigDecimal = new BigDecimal(1.2215667); // 这种写法会造成精度丢失的BigDecimal bigDecimal = new BigDecimal(10); // 这种写法是可以的BigDecimal bigDecimal = new BigDecimal("1.2215667"); // 这么写不会丢精度
int count = bigDecimal.scale(); // 7 返回小数点后保留了几位
详细用法
1. ROUND_UP
代码如下(示例):
BigDecimal bigDecimal = new BigDecimal("1.221").setScale(2, BigDecimal.ROUND_UP);
System.out.println(bigDecimal); // 1.23 不管舍弃位是几 直接进一位
2. ROUND_DOWN
代码如下(示例):
BigDecimal bigDecimal = new BigDecimal("1.2266").setScale(2, BigDecimal.ROUND_DOWN);
System.out.println(bigDecimal); // 1.22 不管舍弃位是几 直接去掉多余的位数
3. ROUND_CEILING(分两种情况)
代码如下(示例):
// 值为正数
BigDecimal bigDecimal = new BigDecimal("1.2246").setScale(2, BigDecimal.ROUND_CEILING);
System.out.println(bigDecimal); // 1.23 不管舍弃位是几 都向上进一位// 值为负数
BigDecimal bigDecimal = new BigDecimal("-1.2256").setScale(2,BigDecimal.ROUND_CEILING);
System.out.println(bigDecimal); // -1.22 不管舍弃位是几 直接删掉
4. ROUND_FLOOR(分两种情况)
代码如下(示例):
// 值为正数的时候
BigDecimal bigDecimal = new BigDecimal("1.2266").setScale(2, BigDecimal.ROUND_FLOOR);
System.out.println(bigDecimal); // 1.22 不管舍弃位是几 直接去掉多余的位数// 值为负数的时候
BigDecimal bigDecimal = new BigDecimal("-1.2226").setScale(2, BigDecimal.ROUND_FLOOR);
System.out.println(bigDecimal); // -1.23 不管舍弃位是几 负数时会进一位
5. ROUND_HALF_UP
代码如下(示例):
BigDecimal bigDecimal = new BigDecimal("1.225").setScale(2, BigDecimal.ROUND_HALF_UP);
System.out.println(bigDecimal); // 1.23 四舍五入(若舍弃位的的第一个数 >=5 就进一位)
6. ROUND_HALF_DOWN
代码如下(示例):
BigDecimal bigDecimal = new BigDecimal("1.225").setScale(2, BigDecimal.ROUND_HALF_DOWN);
System.out.println(bigDecimal); // 1.22 四舍五入(若舍弃位的的第一个数 >5 就进一位)
7. ROUND_HALF_EVEN
代码如下(示例):
/*** 这边特殊一点,是根据保留的最后一位小数的奇偶性来判断的* 这边保留的最后一位是2 偶数 只有当 >5 时 才能进一位*/
BigDecimal bigDecimal = new BigDecimal("1.225").setScale(2, BigDecimal.ROUND_HALF_EVEN);
System.out.println(bigDecimal); // 1.22/*** 这边保留的最后一位是1 奇数 当>=5时 才能进一位*/
BigDecimal bigDecimal1 = new BigDecimal("1.215").setScale(2, BigDecimal.ROUND_HALF_EVEN);
System.out.println(bigDecimal1); // 1.22
7. ROUND_UNNECESSARY
翻译:舍入模式可以断言所请求的操作具有准确的结果,因此不需要舍入。如果在产生不精确结果的操作上指定了这种舍入模式,则会引发ArithmeticException
代码如下(示例):
BigDecimal bigDecimal = new BigDecimal("1.2266").setScale(2,BigDecimal.ROUND_UNNECESSARY);
System.out.println(bigDecimal); // 会抛出ArithmeticException异常
BigDecimal.setScale()方法总结相关推荐
- BigDecimal.setScale方法
BigDecimal.setScale()方法用于格式化小数点 BigDecimal.setScale(1)表示保留一位小数,默认用四舍五入方式 BigDecimal.setScale(1,BigD ...
- 【java笔记】java中用于小数进位的BigDecimal.setScale方法
BigDecimal.setScale主要用于对BigDecimal数据小数点后的位数进行进位.舍位.截断等操作.其进位方式主要有以下8种,依次分别对应着数字0~7,即写它们和写它们对应的数字是等价的 ...
- BigDecimal.setScale()方法实用技巧
方法使用 scale() 方法用于格式化小数点 setScale(1,BigDecimal.ROUND_DOWN) 直接删除多余的小数位,如2.35会变成2.3 setScale(1,BigDecim ...
- BigDecimal中divide方法与setScale方法详解
BigDecimal中divide方法详解 1.首先说一下用法,BigDecimal中的divide主要就是用来做除法的运算.其中有这么一个方法. public BigDecimal divide(B ...
- BigDecimal.setScale 处理java小数点
BigDecimal.setScale()方法用于格式化小数点 setScale(1)表示保留一位小数,默认用四舍五入方式 setScale(1,BigDecimal.ROUND_DOWN)直接删除多 ...
- BigDecimal.setScale
BigDecimal.setScale()方法用于格式化小数点 setScale(1)表示保留一位小数,默认用四舍五入方式 setScale(1,BigDecimal.ROUND_DOWN)直接删除多 ...
- BigDecimal类setScale方法问题:算数异常,精确度丢失-ArithmeticException: Rounding necessary
BigDecimal类setScale方法问题:算数异常,精确度丢失-ArithmeticException: Rounding necessary 在运行如下代码时, package BigDeci ...
- setscale方法的用法_基于BigDecimal.setScale的用法小结
1. BigDecimal num1 = new BigDecimal(2.225667);//这种写法不允许,会造成精度损失 2. BigDecimal num2 = new BigDecimal( ...
- BigDecimal类 setScale()方法java.lang.ArithmeticException: Rounding necessary
BigDecimal调用setScale方法时,当未设置舍入模式时,系统会给个默认ROUND_UNNECESSARY(int 值为7)值,如果小数点后不为零,而且要保留的小数位数小于旧小数位数,那么此 ...
最新文章
- R语言ggplot2可视化:拟合二次曲线(quadratic curve)并使用ggplot2进行可视化、可视化两个响应变量和一个预测变量的二次曲线
- 7 = 350 000 000 ?!
- 算法学习——递推之猴子爬山
- textview 滚动显示.txt
- tinyxml使用指导
- 单片机断电后不保存程序_为什么单片机语音芯片既有flash又有EEPROM
- js对当前时间的相关操作
- multinorm r语言_与心理学数据分析相关的R工具包
- CSS中em和px单位的区别(转)
- python获取当前日期_Python程序获取当前日期
- Taro+react开发(8)--控制跳转
- hbase 用户名密码_HBase开源 | HBase表管理系统HBaseManager2.0.2
- 育碧2k微软服务器,育碧服务器出现大规模的BUG:影响到多个平台
- RAC-DG 安装总结
- 奇怪的315:大家都知道,为什么要等晚会曝光,管理部门呢
- [转载] 全本张广泰——第九回 出世见师兄 广泰走江湖
- 安装sql2005,没有SQL Server management studio的原因分析及解决方案
- Layui Select四级联动效果触发
- 解决java中使用getImage()导入图片失败问题
- ios可视化编程 UI高级 UI_13