Я смотрел на исходный код openjdk-1.7.0_25
и я видел этот метод:Java isNan, как это работает?
/**
* Returns {@code true} if the specified number is a
* Not-a-Number (NaN) value, {@code false} otherwise.
*
* @param v the value to be tested.
* @return {@code true} if the argument is NaN;
* {@code false} otherwise.
*/
static public boolean isNaN(float v) {
return (v != v);
}
Я не могу понять, как это работает, когда этот метод может возвращать true
?
Таким образом, просто небольшой набор операций может возвращать 'NaN' и только с этими значениями он может возвращать' true' ... ok спасибо! – rascio
@rascio. Да, этот метод вернет 'true' только для аргумента' NaN'. И может быть и другая операция, которая возвращает «NaN». Подобно 'Double.POSITIVE_INFINITY/Double.POSITIVE_INFINITY', аналогично для Negative infinity. –
@rascio Кроме того, не забывайте, что если вы продолжаете вычислять с помощью этого значения «NaN», каждый результат всегда будет также «NaN». Теоретически да, только небольшой набор операций фактически генерирует «NaN», но если вы продолжаете вычислять с ним, каждая дальнейшая операция также вернет «NaN»! –