Exception in thread "main" java.lang.ArithmeticException: Non-terminating decimal expansion; no exac
来源:互联网 发布:金牛考勤软件 编辑:程序博客网 时间:2024/06/05 20:29
1、错误描述
Exception in thread "main" java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.at java.math.BigDecimal.divide(BigDecimal.java:1616)at com.you.model.AddSubMulDiv.addSubMulDiv(AddSubMulDiv.java:59)at com.you.model.AddSubMulDiv.main(AddSubMulDiv.java:81)
2、错误原因
/** * * 项目名称:DABF * 项目包名:com.you.model * 文件名称:AddSubMulDiv.java * 类型名称:AddSubMulDiv * 创建作者:游海东 * 创建日期:2017-2-18 * 创建时间:上午9:10:27 * 版权所有: * 项目版本:V1.0 */package com.you.model;import java.math.BigDecimal;/** * BigDecimal加减乘除 * 文件名称:AddSubMulDiv.java * 文件类型:AddSubMulDiv * 文件包名:com.you.model * 创建作者:游海东 * 创建日期:2017-2-18 * 创建时间:上午9:10:27 */public class AddSubMulDiv {/** * * 方法描述:加减乘除 * 创建作者:游海东 * 创建日期:2017-2-18 * 创建时间:上午9:12:53 * 方法名称:addSubMulDiv * 方法类型:AddSubMulDiv * 返回类型:BigDecimal * @param anum * @param bnum * @param type * @return */public static BigDecimal addSubMulDiv(double anum,double bnum,String type){BigDecimal oneNum = new BigDecimal(anum);BigDecimal twoNum = new BigDecimal(bnum);BigDecimal resultNum = new BigDecimal(0);switch(type){case "ADD":resultNum = oneNum.add(twoNum);break;case "SUB":resultNum = oneNum.subtract(twoNum);break;case "MUL":resultNum = oneNum.multiply(twoNum);break;case "DIV":resultNum = oneNum.divide(twoNum);break;default:break;}resultNum = resultNum.setScale(2,BigDecimal.ROUND_HALF_UP);return resultNum;}/** * 方法描述:加减乘除测试 * 创建作者:游海东 * 创建日期:2017-2-18 * 创建时间:上午9:10:28 * 方法名称:main * 方法类型:AddSubMulDiv * 返回类型:void * @param args */public static void main(String[] args) {BigDecimal sumNum = addSubMulDiv(667.53, 227.89, "DIV");System.out.println(sumNum);}}
由于传入的两个操作数都是double类型,在做除法运算时导致除不尽,无限不循环小数,导致报错
3、解决办法
(1)除法运算时,将结果四舍五入处理
(2)将两个操作数改成String类型
0 0
- Exception in thread "main" java.lang.ArithmeticException: Non-terminating decimal expansion; no exac
- Java异常:Exception in thread "main" java.lang.ArithmeticException: Non-terminating decimal expansion;
- Java异常:Exception in thread "main" java.lang.ArithmeticException: Non-terminating decimal expansion;
- java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal res
- java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal res
- java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal res
- java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal res
- java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal res
- BigDecimal除法运算出现java.lang.ArithmeticException: Non-terminating decimal expansion; no exact represent
- BigDecimal做除法运算报java.lang.ArithmeticException: Non-terminating decimal expansion; no exact represent
- 系统异常,异常信息:java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable d
- BigDecimal除法运算出现java.lang.ArithmeticException: Non-terminating decimal expansion; no exact represent
- BigDecimal除法运算出现java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result的解决办法
- Java Exception: Non-terminating decimal expansion
- BigDecimal不整除的一个异常java.lang.ArithmeticException: Non-terminating decimal expansion
- Exception in thread "main" java.lang.ArithmeticException: / by zero
- Non-terminating decimal expansion; no exact representable decimal result
- Non-terminating decimal expansion; no exact representable decimal result.
- Docker的save和export命令的区别
- mac 终端简单指令
- ajax html返回
- wstmart知识记录
- php获取请求接口控制器和方法名称
- Exception in thread "main" java.lang.ArithmeticException: Non-terminating decimal expansion; no exac
- 信号控制进程 kill,top
- Android视图绘制流程完全解析,带你一步步深入了解View(二)
- SublimeText3常用快捷键和优秀插件
- js判断输入字符串是否为空、空格、null总结
- 设计模式之工厂模式
- Redis五种数据结构
- PXE自动安装Linux系统
- LNMP一键安装