首页 > 编程语言 > 详细

Double 类型java.lang.NumberFormatException: Infinite or NaN

时间:2021-09-10 05:47:39      阅读:64      评论:0      收藏:0      [点我收藏+]

1、错误原因
在对Double类型的数据进行计算操作,将结果转化为BigDecimal时抛出了NumberFormatException。

Infinite 、 NaN是double类型的常量:无穷大、非数。结果类型转换在构造BigDecimal对象时,构造方法中传入的Double类型为无穷大或非数字时会抛出NumberFormatException异常。

2、概念补充
任意整数(byte、short、int、long皆可)除以整数0结果为ArithmeticException;

0除以浮点0结果为NAN,细分的话包括以下三种情况:

(1)0/0.0

(2)0.0/0.0

(3)0.0/0

情况(3)虽然除的是个整数0,但在运算过程中发生了类型转化变成了浮点0;

任意数(八大基本类型皆可)除以浮点0结果为Infinity/-Infinity。

在java中浮点数0并非一个准确值,而是一个无限接近0的数。

method: findDataCompareRatio, exception: java.lang.NumberFormatException: Infinite or NaN, dubbo version: 2.6.2, current host: xxx
java.lang.NumberFormatException: Infinite or NaN

 

Double joinPeopleSameRatio = joinPeople4StartTime / Double.valueOf(joinPeople4LastStartTime2);
joinPeopleVo.setSameRatio(ReportUtil.retainDecimalPoint(2, joinPeopleSameRatio * ONE_HUNDRED));

优化后:
Double joinPeopleSameRatio = joinPeople4LastStartTime2 == 0 ? 0 : joinPeople4StartTime / Double.valueOf(joinPeople4LastStartTime2);
joinPeopleVo.setSameRatio(ReportUtil.retainDecimalPoint(2, joinPeopleSameRatio * ONE_HUNDRED));

Double 类型java.lang.NumberFormatException: Infinite or NaN

原文:https://www.cnblogs.com/hong521duan/p/15246384.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!