gpt4 book ai didi

java - 为什么 Android 中的 Math.round(float f) 方法要检查 NaN?

转载 作者:太空宇宙 更新时间:2023-11-04 15:07:07 24 4
gpt4 key购买 nike

我正在查看Math Android 框架中的源代码,这里是 round()方法如下:

public static int round(float f) {
// check for NaN
if (f != f) {
return 0;
}
return (int) floor(f + 0.5f);
}

我试图理解第一次检查的结果,但没有成功。 f 怎么会不同于它本身呢?我也想不出任何测试用例可以让这一切变得不同......有什么想法吗?

最佳答案

How could f be different from itself?

如果f是一个NaN,它将测试为与包括另一个NaN在内的所有 float 不同。这就是定义。来自 JLS #15.21.1 :

"If either operand is NaN, then the result of == is false but the result of != is true. Indeed, the test x!=x is true if and only if the value of x is NaN."

I also can't think of any test case that would make this any different... Any idea?

错误,Float.NaN。

关于java - 为什么 Android 中的 Math.round(float f) 方法要检查 NaN?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21842825/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com