BigDecimal类setScale方法问题:算数异常,精确度丢失-ArithmeticException: Rounding necessary
BigDecimal类setScale方法问题:算数异常,精确度丢失-ArithmeticException: Rounding necessary
在运行如下代码时,
package BigDecimal精确度;import java.math.BigDecimal;public class BigDecimalSetSacle {public static void main(String[] args) {BigDecimal decimal = new BigDecimal("58.33888");BigDecimal result = decimal .setScale(2);System.out.println(result); }
}
会报算数异常:
Exception in thread "main" java.lang.ArithmeticException: Rounding necessary
at java.math.BigDecimal.commonNeedIncrement(BigDecimal.java:4148)
at java.math.BigDecimal.needIncrement(BigDecimal.java:4204)
at java.math.BigDecimal.divideAndRound(BigDecimal.java:4112)
at java.math.BigDecimal.setScale(BigDecimal.java:2452)
at java.math.BigDecimal.setScale(BigDecimal.java:2512)
at BigDecimal精确度.BigDecimalSetSacle.main(BigDecimalSetSacle.java:9)
原因是:没有设置mode,setScale方法,不给mode时,默认会设置mode为:ROUND_UNNECESSARY
但是ROUND_UNNECESSARY,在精确度丢失时,抛出异常。
所以,如果需要使用setScale方法,建议根据需要传入指定的mode,不要使用默认,否则会抛出异常!
默认的setScale(int newSacle)方法,只要参数的newSacle的大小,比this的小数点后位数小,则会抛出异常。
BigDecimal类setScale方法问题:算数异常,精确度丢失-ArithmeticException: Rounding necessary相关推荐
- BigDecimal类 setScale()方法java.lang.ArithmeticException: Rounding necessary
BigDecimal调用setScale方法时,当未设置舍入模式时,系统会给个默认ROUND_UNNECESSARY(int 值为7)值,如果小数点后不为零,而且要保留的小数位数小于旧小数位数,那么此 ...
- Double转BigDecimal并保留两位小数出现异常: java.lang.ArithmeticException: Rounding necessary
分享知识 传递快乐 Double 转 BigDecima l并保留两位小数出现异常: java.lang.ArithmeticException: Rounding necessary . 代码如下: ...
- java bigdecimal.round_down,java BigDecimal 的 setScale() 方法的 BigDecimal.ROUND_DOWN 舍入模式的BUG,坑...
因为项目使用到 BigDecimal.ROUND_DOWN 接近零的舍入模式 ,没想到有一个 使用的坑. 下面来例子说明: String add = "67.80"; System ...
- Java使用BigDecimal的setScale方法进行百位向上取整
int num = 199; BigDecimal bd = new BigDecimal(num); bd = bd.setScale(-2, BigDecimal.ROUND_DOWN); Sys ...
- 【java笔记】java中用于小数进位的BigDecimal.setScale方法
BigDecimal.setScale主要用于对BigDecimal数据小数点后的位数进行进位.舍位.截断等操作.其进位方式主要有以下8种,依次分别对应着数字0~7,即写它们和写它们对应的数字是等价的 ...
- JAVA基础再回首(十三)——BigInteger类、BigDecimal类、Date类、DateFormat类、Calendar类
JAVA基础再回首(十三)--BigInteger类.BigDecimal类.Date类.DateFormat类.Calendar类 版权声明:转载必须注明本文转自程序员杜鹏程的博客:http://b ...
- 4、大数字运算(BigInteger类和BigDecimal类)
在 Java 中提供了用于大数字运算的类,即 java.math.BigInteger 类和 java.math.BigDecimal 类.这两个类用于高精度计算,其中 BigInteger 类是针对 ...
- 第三次学JAVA再学不好就吃翔(part71)--BigDecimal类
学习笔记,仅供参考,有错必纠 文章目录 BigDecimal类 构造方法 方法 add subtract multiply divide valueOf 举个例子 BigDecimal类 BigDec ...
- Java快速入门到精通—大数字运算(BigDecimal 类)
在Java中提供了用于大数字运算的类,即 java.math.BigInteger 类和 java.math.BigDecimal 类.这两个类用于高精度计算,其中BigInteger 类是针对整型大 ...
最新文章
- spark,hadoop区别
- js之浅拷贝和深拷贝
- linux ssh密钥认证
- 160个Crackme026之六段式注册码详解
- 跨浏览器检测某个节点是不是另一个节点的后代
- C#6.0 十大常用特性
- 正怎表达式在爬虫里的应用
- Ubuntu 16上命令行提示长目录的解决办法
- ANSI是什么编码?
- 23位子网掩码是多少_无敌子网掩码(IP地址)计算方法(完全心算法)
- 一种串口扩展电路应用
- 小米 note3 android,小米NOTE3 MIUI9.6稳定版 开启全面屏手势和屏蔽经典物理按键全攻略...
- ORA-29913,ORA-29400,KUP-00554,KUP-01005,KUP-01007 oracle外部表报错解决记录
- MFC中Wnd.PostMessage()的作用
- N1盒子安装 aria2(带AriaNg前端)
- 我的世界1.14java原版命令_我的世界1.14.4第一个预览版发布 添加了debugreport命令...
- zabbix之 zabbix server 跟 agent 更换ip地址
- 数据可视化之美 -- 以Matlab、Python为工具
- centos 7安装matlab的两种方法(桌面安装和命令行安装)
- A NOVEL DEEP FEATURE FUSION NETWORK FOR REMOTE SENSING SCENE CLASSIFICATION(论文翻译)