小编Yon*_*har的帖子

为什么 Java 的 double/float Math.min() 是这样实现的?

我正在查看 的源代码中的一些内容java.lang.Math,我注意到 while Math.min(int, int)(或其长版本)是这样实现的:

public static int min(int a, int b) {
   return a <= b ? a : b;
}
Run Code Online (Sandbox Code Playgroud)

这对我来说完全有意义,这和我要做的一样。但是,双/浮点实现是这样的:

public static float min(float a, float b) {
   if (a != a) {
      return a;
   } else if (a == 0.0F && b == 0.0F && (long)Float.floatToRawIntBits(b) == negativeZeroFloatBits) {
      return b;
   } else {
      return a <= b ? a : b;
   }
}
Run Code Online (Sandbox Code Playgroud)

我完全傻眼了。相比a于自己?第二次检查是为了什么?为什么它的实现方式与 int/long 版本不同?

java floating-point

70
推荐指数
4
解决办法
5070
查看次数

标签 统计

floating-point ×1

java ×1