Как я могу проверить значения NaN?

Текущий язык Spec: технически, порядок не указан.

Текущие браузеры: порядок сохраняется с большим исключением таких ключей, как «7», которые анализируются как целые числа и обрабатываются по-разному с помощью Chrome / V8.

Спецификация будущего языка (> ES2015): Как правило, вы можете ожидать, что упорядоченные сегодня вещи не будут неупорядочены. Новые API гарантируют заказ; существующие API трудно изменить. См. Ответ JMM для более подробной информации.

Лучшая ссылка ниже приведена в комментарии Tim Down:

http://code.google.com/p/v8/issues/ detail? id = 164

Эта ошибка подробно описывает проектные решения, связанные с реализацией ключевых заказов Chrome. Один вывод - это то, что для строковых ключей, которые не анализируют целое число (то есть «a» или «b», но не «3»), клавиши печатаются в порядке ввода во всех основных браузерах, и хотя это поведение не является «стандартизировано», оно IS считается существенной проблемой обратной совместимости поставщиками браузеров. Используйте на свой страх и риск.

По одному из (довольно упрямых) комментариев:

Стандарты всегда следуют за реализациями, вот откуда появился XHR, и Google делает то же самое путем внедрения Gears и последующего использования эквивалентной функциональности HTML5. Правильное решение состоит в том, чтобы ECMA формально включала де-факто стандартное поведение в следующий оборот спецификации.

blockquote>

Если вы полагаетесь на порядок вставки, вы находитесь за пределами спецификации ECMAScript, но внутри де-факто стандарт общего поведения браузера , если ваши ключи не анализируются как целые числа .

771
задан martineau 7 October 2018 в 19:50
поделиться

6 ответов

math.isnan (x)

Вернуть Истина , если x является NaN (не числом), и Ложь в противном случае.

>>> import math
>>> x = float('nan')
>>> math.isnan(x)
True
1097
ответ дан 22 November 2019 в 21:11
поделиться

numpy.isnan (number) сообщает вам, NaN или нет.

131
ответ дан 22 November 2019 в 21:11
поделиться

math.isnan ()

или сравните число с собой. NaN всегда! = NaN, в противном случае (например, если является числом) сравнение должно быть успешным.

22
ответ дан 22 November 2019 в 21:11
поделиться

Обычный способ проверить NaN - проверить, равно ли оно самому себе:

def isNaN(num):
    return num != num
315
ответ дан 22 November 2019 в 21:11
поделиться
3653534-

Другой метод, если вы застряли на <2.6, у вас нет Numpy, а у вас нет поддержки IEEE 754:

def isNaN(x):
    return str(x) == str(1e400*0)
17
ответ дан 22 November 2019 в 21:11
поделиться

С python < 2.6 я закончил с

def isNaN(x):
    return str(float(x)).lower() == 'nan'

Это работает для меня с python 2.5.1 на Solaris 5.9 box и с python 2.6.5 на Ubuntu 10

8
ответ дан 22 November 2019 в 21:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: