java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result异常的解决方法
2023-09-11 14:18:05 时间
今天在写一个JAVA程序的时候出现了异常:java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result。
发现报错的语句是:
1
|
foo.divide(bar)); |
原来JAVA中如果用BigDecimal做除法的时候一定要在divide方法中传递第二个参数,定义精确到小数点后几位,否则在不整除的情况下,结果是无限循环小数时,就会抛出以上异常。
解决方法:
1
|
foo.divide(bar, 2 , BigDecimal.ROUND_HALF_UP); |
注意这个divide方法有两个重载的方法,一个是传两个参数的,一个是传三个参数的:
两个参数的方法:
@param divisor value by which this {@code BigDecimal} is to be divided. 传入除数
@param roundingMode rounding mode to apply. 传入round的模式
三个参数的方法:
@param divisor value by which this {@code BigDecimal} is to be divided. 传入除数
@param scale scale of the {@code BigDecimal} quotient to be returned. 传入精度
@param roundingMode rounding mode to apply. 传入round的模式
相关文章
- 【异常】idea执行Main方法出现 Exception in thread "main" java.lang.NoClassDefFoundError: javax/servlet/http/HttpServletRequest
- JAVA轻量级文件监控
- java实现第六届蓝桥杯居民集会
- Java中BigDecimal类的常用方法
- Java中lang包的常用方法介绍
- Java实现 蓝桥杯VIP 算法训练 平方计算
- Java实现 蓝桥杯 算法提高 日期计算
- java写入文件的几种方法小结
- Java ArrayList正确循环添加删除元素方法及分析
- java.lang.OutOfMemoryError: Java heap space 解决方法
- 【JAVA】Java 异常中e的getMessage()和toString()方法的异同
- [Java] 实现多线程的两种方法
- Java知识回顾 (6)正则表达式、方法、文件与异常
- Atitit.提升软件Web应用程序 app性能的方法原理 h5 js java c# php python android .net
- Atitit.实现继承的原理and方法java javascript .net c# php ...
- atitit.人脸识别的应用场景and使用最佳实践 java .net php
- List中subList方法抛出异常java.util.ConcurrentModificationException原理分析
- Java——ThreadLocal概述、解决SimpleDateFormat出现的异常、内存泄漏、弱引用、remove方法
- Caused by: java.lang.IllegalStateException: 由于StackOverflower错误,无法完成对web应用程序[/lib]的批注的扫描。可能的根本原因包......
- Java 异常解决之java.lang.IllegalArgumentException: Comparison method violates its general contract!
- java.text.NumberFormat使用方法
- Java如何使用重载方法处理异常?
- Java基础(15)-方法详解
- java.lang.Thread类详解,yield方法,join方法,interrupt方法,interrupted方法,destroy方法