我们如何检查Java中浮点变量的负数超出范围?
如果我使用Float.parseFloat(" 1.4E-46"),则返回0.0而不是负无穷大。在正数较大的情况下,它会返回无限。
以下代码适用于正数,我看起来类似负数。
Float f = Float.valueOf(Float.parseFloat(input));
if (f.floatValue() > Float.MAX_VALUE) {
return false;
}
答案 0 :(得分:6)
如果我使用Float.parseFloat(" 1.4E-46"),则返回0.0而不是负无穷大。在正数较大的情况下,它会返回无限。
数字1.4E-46
不是负数。这是一个非常小正数。
1.4E+46
的反面是-1.4E+46
。因此,如果您执行Float.valueOf("-1.4E+46")
,您将获得-Infinity
。
答案 1 :(得分:4)
这不是负数;这是一个非常小的正数。这是计算机化的"科学计数法。 1.4E-46
相当于1.4 x 10 -46 。
Float.parseFloat
方法解析与Float.valueOf(String)
:Float.MIN_VALUE / 2
相同的数字0.0
:
如果s的精确值在幅度上足够小(小于或等于MIN_VALUE / 2),则舍入为float将导致零。
Java的解析方法确定该值小于{{1}},因此返回{{1}}。