У меня есть двойной в Java, и я хочу проверить, если это так NaN
. Каков наилучший способ сделать это?
284
Используйте статический Double.isNaN(double)
метод или ваш Double
«S .isNaN()
метод.
// 1. static method
if (Double.isNaN(doubleValue)) {
...
}
// 2. object's method
if (doubleObject.isNaN()) {
...
}
Просто делаю:
if (var == Double.NaN) {
...
}
это не является достаточным из - за того , как стандарт IEEE для NaN и чисел с плавающей точкой определяется.
Double.isNaN should be (true)
хороший ответvalue == Double.NaN
не работает, ноDouble.isNaN(value)
работает просто отлично.Попробуй
Double.isNaN()
:Обратите внимание, что [
double.isNaN()
] не будет работать, потому что у распакованных двойников нет методов, связанных с ними.источник
Double.isNan()
а не такdouble.IsNan()
, верно?Вы можете также рассмотреть возможность проверки, если значение конечно через
Double.isFinite(value)
. Начиная с Java 8 вDouble
классе появился новый метод, где вы можете сразу проверить, не является ли значение NaN и бесконечностью.источник
Вы можете проверить на NaN с помощью
var != var
.NaN
не равноNaN
.РЕДАКТИРОВАТЬ : Это, вероятно, наихудший метод. Это сбивает с толку, ужасно для читабельности и общей плохой практики.
источник
isNan
лучше для удобства чтения, но он работает, верно? ИisNan
метод использует это для проверкиNaN
.isNaN
делает это под капотом, но как это работает? Как что-то не равно себе ??Новичкам нужны практические примеры. так что попробуйте следующий код.
источник
Приведенный ниже фрагмент кода поможет оценить примитивный тип, содержащий NaN.
double dbl = Double.NaN; Double.valueOf(dbl).isNaN() ? true : false;
источник