Non-terminating decimal expansion; no exact representable decimal result

来源:互联网 发布:linux下qt串口编程 编辑:程序博客网 时间:2024/06/16 13:53

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.example.BigDecimals.main(BigDecimals.java:40)

2、错误原因

/** * * 项目名称:DABF * 项目包名:com.you.example * 文件名称:BigDecimals.java * 类型名称:BigDecimals * 创建作者:游海东 * 创建日期:2017-1-11 * 创建时间:上午10:45:54 * 项目版本:V1.0 */package com.you.example;import java.math.BigDecimal;/** * 文件名称:BigDecimals.java * 文件类型:BigDecimals * 文件包名:com.you.example * 创建作者:游海东 * 创建日期:2017-1-11 * 创建时间:上午10:45:54 */public class BigDecimals {/** * 方法描述: * 创建作者:游海东 * 创建日期:2017-1-11 * 创建时间:上午10:45:54 * 方法名称:main * 方法类型:BigDecimals * 返回类型:void * @param args */public static void main(String[] args) {BigDecimal a = new BigDecimal(200);BigDecimal b = new BigDecimal(3);System.out.println(a.divide(b));}}
     BigDecimal 在做除法运算时,遇到无限循环小数,会报这个错误


3、解决办法

      BigDecimal 做除法需要对小数进行四舍五入

/** * * 项目名称:DABF * 项目包名:com.you.example * 文件名称:BigDecimal.java * 类型名称:BigDecimal * 创建作者:游海东 * 创建日期:2017-1-11 * 创建时间:上午10:45:54 * 项目版本:V1.0 */package com.you.example;import java.math.BigDecimal;/** * 文件名称:BigDecimal.java * 文件类型:BigDecimal * 文件包名:com.you.example * 创建作者:游海东 * 创建日期:2017-1-11 * 创建时间:上午10:45:54 */public class BigDecimals {/** * 方法描述: * 创建作者:游海东 * 创建日期:2017-1-11 * 创建时间:上午10:45:54 * 方法名称:main * 方法类型:BigDecimal * 返回类型:void * @param args */public static void main(String[] args) {BigDecimal a = new BigDecimal(200);BigDecimal b = new BigDecimal(3);System.out.println(a.divide(b,2,BigDecimal.ROUND_HALF_UP));}}



0 0
原创粉丝点击