问题现象:
今天在给某个方法传入了一个int类型的0的值时,出现了以下报错:
Postman接口测试结果:
问题分析:
这是因为:
float number1 = Float.parseFloat(number.toString());
这个语句将字符串转化为float类型,而int类型0这个值的字符串"0";
对于float浮点数类型而言,0不是正常的浮点数;因此无法正常转化;
因此当传入的数据是0时,就会出现NaN报错:无法识别成数字.
具体的原因涉及到计算机底层存储数据时用到的位运算原则;有兴趣的小伙伴可以自行去了解一下.
这里我就提供一下解决方法.
可以通过
Float.isNaN(number1);
来对转化后的数据进行判断.
假如转化后时NaN则直接return 0;
注意:
这里是不能用number1==NaN来判断,因为NaN不等于NaN,比较特殊.
解决方法:
原代码:
修改为以下代码:
也就是在转化之前先判断一下.
Postman接口测试结果: