BigDecimal 的除法】的更多相关文章

 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的divide方法进行除法时当不整除,出现无限循环小数时,就会抛异常的,异常如下:java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result. at java.math.BigDecimal.divide(Unknown Source) 应用场景:一批中供客户的单价是1000元/年,如果按…
坑:bigdecimal类型做除法运算时,结果为整数或有限小数时候不存在问题,若结果无法整除,为无限小数时报错 错误代码: Bigdecimal  b = a.divide(c).setScale(5,ROUND_HALF_DOWN); 错误提示: Non-terminating decimal expansion; no exact representable decimal result" 错误翻译: 十进制小数点膨胀:没有确切的表示十进制的结果 错误原因: 暂时不详 代码改进: BigDe…
1.异常信息摘要(详细请见文末): java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result. 2.原因 Bigdecimal 做除法时,没有指定结果小数位精度和舍入模式,而除法的结果刚好是一个无限循环小数. 3.示例 4.解决 Bigdecimal.divide有几个重载方法,其中有三个参数的是最全的方法.其第一个参数的是除数,第二个参数是结果小…
参加工作之后发现公司项目的数据库有关数值的字段类型,很少是之前常用的float和double, 而是一个没有接触过的decimal,在Java中表示的类型为BigDecimal, 而在业务中常常有关BigDecimal的加减乘除运算,所以查了一下资料,做了如下总结. 1.前言 Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算. 双精度浮点型变量double可以处理16位有效数. float和double主要用来处理科学计算和工程计算,…
有时候可能会碰到需要计算非常大的数,比如7777777777777777777777777*3333333333333333333333333333,这样的计算需要显然不能用之前的方式来进行.我们不能用任何的数据类型来装下这么大的数,它已经操作了int.float.double的数据类型的范围.那么如何解决这样的计算需求呢?这时候,就需要进行大数操作. 在java.math这个包中有两个进行大数操作的类:java.math.BigInteger和java.math.BigDecimal.从名字上…
首先我们先来看如下代码示例: 1 public class Test_1 { 2 public static void main(String[] args) { 3 System.out.println(0.06+0.01); 4 System.out.println(1.0-0.42); 5 System.out.println(4.015*100); 6 System.out.println(303.1/1000); 7 } 8 9 } 运行结果如下. 0.0699999999999999…
使用BigDecimal类来进行计算的时候,主要分为以下步骤: 1.用float或者double变量构建BigDecimal对象. 2.通过调用BigDecimal的加,减,乘,除等相应的方法进行算术运算. 3.把BigDecimal对象转换成float,double,int等类型. 一般来说,可以使用BigDecimal的构造方法或者静态方法的valueOf()方法把基本类型的变量构建成BigDecimal对象. 1 1 BigDecimal b1 = new BigDecimal(Doubl…
我们都知道,java中对大小数,高精度的计算都会用到BigDecimal.但是在实际应用中,运用BigDecimal还是会遇到一些问题.下面说一下我在项目中怎么样BigDecimal和遇到的一些问题. 1. 对商品的价格进行格式化,比如所有商品的价格保留两位小数 /** * * @param bd 商品的价格 * @param num 保留几位小数,如num = 2 * @return */ public static String formatPrice(BigDecimal bd,int n…