一.背景 今天在计算库存消耗百分比(消耗的库存/总库存)的时候遇到了一个错误,java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result. 通过异常的描述,我们知道这是因为,某些场景下对于如1/3会得到一个无穷小数,这个时候需要定义计算结果要保留到小数点后几位,否则就会抛出上面的异常. 二.方法介绍 出现异常时使用的方法,此方法没有精度设置. pub…
BigDecimal除法运算出现java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result的解决办法 今天在使用两个BigDecimal类型的数字做除法运算时,出现了一个如下的异常信息: 1 java.lang.ArithmeticException: Non-terminating decimal expansion; no exact repre…
今天在写一个JAVA程序的时候出现了异常:java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.发现报错的语句是: ? 1 foo.divide(bar)); 原来JAVA中如果用BigDecimal做除法的时候一定要在divide方法中传递第二个参数,定义精确到小数点后几位,否则在不整除的情况下,结果是无限循环小数时,就会抛出以上异常.解决方…
做除法没有指定保留小数点后几位,就会抛出此异常. 因为会除不尽 Non-terminating decimal expansion; no exact representable decimal result.…
Non-terminating decimal expansion; no exact representable decimal result.  翻译为:非终止十进制扩展; 没有确切的可表示的小数结果: 翻译为人话就是说:BigDecimal是为高精度计算而设计的,而你的值是没有精确结果的: 举例: BigDecimal b1=new BigDecimal(1.0); BigDecimal b2=new BigDecimal(3.0); BigDecimal c=b1.divide(b2);…
问题描述 意思是“无法结束的除法表达式:没有精确的除结果”.当时输入的10/3,结果应该是3.3333....333. 下面这种处理方式有问题. BigDecimal num3 = new BigDecimal("10").divide( new BigDecimal("3")); devide的函数定义 BigDecimal.divide(BigDecimal divisor, int scale, RoundingMode roundingMode) ; sca…
异常原因:没有指定数据精度导致数据运算无法正常结算 如执行下面的除法: ).divide(BigDecimal.valueOf()).intValue(); 指定精度后就可以了: ).divide(BigDecimal.valueOf(), , BigDecimal.ROUND_HALF_UP).intValue();…
基于Windows下处理Java错误:编码GBK的不可映射字符的解决方案 最近在研究Java,涉及命令行编译,使用notepad++编辑器,然后使用javac编译: 之前的几个文件没有中文的内容,都没有产生错误,这次有中文就产生这样的错误! 解决方案 方案一.指定编码 javac -encoding utf-8 CommonClassLoader.java 方案二.修改文件编码 注意 当文件是utf-8编码时,不能有BOM,否则也会有错误,如下图:…
出现The public type xxx must be defined in its own file这个问题,是由于定义的JAVA类同文件名不一致.public类必须定义在它自己的文件中. 解决方法: 1.把文件名修改同公共类一样的名字: 2.把类名修改成同文件名: 3.子类继承父类时,不需要再用public修饰. 同一文件中,不能有多于一个public声明的类出现,可以将其中一个public去掉,即不加任何修饰符,通常称为“默认访问模式”,在该模式下,这个类只能被同一个包中的类访问或引用…
  正确编译命令: javac Hello.java 正确运行命令: java Hello   错误1:H:\code>java Hello.java 错误: 找不到或无法加载主类 Hello.java 原因:命令错误   错误2:H:\code>java Hello.class 错误: 找不到或无法加载主类 Hello.class 原因:命令错误   错误3:java 源文件带有包名,往往容易出错 解决:删除包名  或者  创建一个与包名相同的文件结构(H:\code\com\example…