Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/193.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么Android中的Math.round(float f)方法会检查NaN?_Java_Android - Fatal编程技术网

Java 为什么Android中的Math.round(float f)方法会检查NaN?

Java 为什么Android中的Math.round(float f)方法会检查NaN?,java,android,Java,Android,我查看了Android框架中的数学资源,下面是round方法的样子: public static int round(float f) { // check for NaN if (f != f) { return 0; } return (int) floor(f + 0.5f); } 我正试图对第一张支票所做的事了如指掌,但没有成功。f和它自己有什么不同?我也想不出任何一个测试用例会让这有什么不同。。。有什么想法吗 f和它自己有什么不同 如果

我查看了Android框架中的数学资源,下面是round方法的样子:

public static int round(float f) {
    // check for NaN
    if (f != f) {
        return 0;
    }
    return (int) floor(f + 0.5f);
}
我正试图对第一张支票所做的事了如指掌,但没有成功。f和它自己有什么不同?我也想不出任何一个测试用例会让这有什么不同。。。有什么想法吗

f和它自己有什么不同

如果f是一个NaN,它将测试为不同于包括另一个NaN在内的所有浮动。这就是定义。发件人:

如果任一操作数为NaN,则==的结果为false,但!=这是真的。事实上,测试x=当且仅当x的值为NaN时,x为真。 我也想不出任何一个测试用例会让这有什么不同。。。有什么想法吗


呃,Float.NaN。

NaN是x!=x是正确的。请看。

请参阅。这就是它的定义。我觉得这有点混乱,但我想这是有道理的。谢谢EJP,我们将在possible@downvoter你在和JLS争论。如果你有一个超越引文,请提供它。谢谢!这条线让我更容易理解它的工作原理