Java编程中  BigDecimal进行除法divide运算时,如果结果不整除,出现无限循环小数.则会抛出以下异常: java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result. 应用场景:一批中供客户的单价是1000元/年,如果按月计算的话1000/12=83.3333333333.... 解决之道:就是给divide设置精确的小数点divid…
  循环小数输出的坑 BigDecimal做除法时如果出现除不尽(循环小数)的情况,会抛异常: BigDecimal a = new BigDecimal("1"); System.out.println(a.divide(new BigDecimal(3))); 异常如下: Exception in thread "main" java.lang.ArithmeticException: Non-terminating decimal expansion; no…
坑:bigdecimal类型做除法运算时,结果为整数或有限小数时候不存在问题,若结果无法整除,为无限小数时报错 错误代码: Bigdecimal  b = a.divide(c).setScale(5,ROUND_HALF_DOWN); 错误提示: Non-terminating decimal expansion; no exact representable decimal result" 错误翻译: 十进制小数点膨胀:没有确切的表示十进制的结果 错误原因: 暂时不详 代码改进: BigDe…
1.对于金额相关运算,若是精度较高,基本上用BigDecimal进行运算,精度要求低的话用Long.Double即可 2.web后台接受金额用String接受,展示到前端一般也转成 String 3.后台mysql数据库存储用 Decimal(N,M) 相关资料 Java BigDecimal类的使用和注意事项:https://www.jb51.net/article/86583.htmjava -- BigDecimal的setScale的几种用法:https://blog.csdn.net/…
转自:http://guoliangqi.iteye.com/blog/670908 之前提到过在商业运算中要使用BigDecimal来进行相关的钱的运算(java中关于浮点运算需要注意的 ),可是实际使用中,简单的用BigDecimal还是出现了一些小问题. BigDecimal a = new BigDecimal(998.01); BigDecimal b=new BigDecimal("100"); System.out.println(a.multiply(b)); BigD…
java.math.BigDecimal.BigDecimal一共有4个够造方法,让我先来看看其中的两种用法: 第一种:BigDecimal(double val)Translates a double into a BigDecimal. 第二种:BigDecimal(String val)Translates the String repre sentation of a BigDecimal into a BigDecimal. 使用BigDecimal要用String来够造,要做一个加法…
原文: https://blog.csdn.net/xuwei_net/article/details/81253471 加法:add 减法:subtract 乘法:multiply 除法:divide 可参考下面代码: BigDecimal bignum1 = new BigDecimal("10"); BigDecimal bignum2 = new BigDecimal("5"); BigDecimal bignum3 = null; //加法 bignum3…
金额的数据类型是BigDecimal 通过BigDecimal的divide方法进行除法时当不整除,出现无限循环小数时,就会抛异常的,异常如下:java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result. at java.math.BigDecimal.divide(Unknown Source) 应用场景:一批中供客户的单价是1000元/年,如果按…
/** * @Description: 四舍五入住宿2小数位数 * @param valueName * @return */ public static Double formateDouble45(Double d){ if(d == null){ return 0d; } BigDecimal b = new BigDecimal(d); double f = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); return f;…
public static void main(String[] args){ BigDecimal bg1, bg2; bg1 = new BigDecimal("200000.45"); bg2 = bg1.multiply(new BigDecimal(10).pow(18)); String str = "原值为: " + bg1 + " 乘以10的18次方为: " + bg2; System.out.println( str );} 结…