关于Float.MIN_VALUE 和 Float.MAX_VALUE
丢人了,太挫了。下面说说出得错。
在一个Java函数中涉及找最小值和最大值。代码如下:
float max = Float.MIN_VALUE;
float min = Float.MAX_VALUE;
for (float num : numbers) {
min = min>num ? num : min;
max = max<num ? num : max;
}
不知道你有没有看出上面代码的问题。
代码的问题在于第一句
float max = Float.MIN_VALUE;
写代码的时候想当然以为Float.MIN_VALUE是float类型的最小值,其实根本不是,它应该叫做float类型能够表示的最小精度,它的实际定义如下:
```Java
public static final float MIN_VALUE = 1.40129846432481707e-45f;
```
注意:它是一个正值,比0都大!前面代码的正确写法应该是:
float max = -Float.MAX_VALUE;
这个Bug找了好久,特地来记录一下!