Код: Выделить всё
>>> nan = float('nan')
>>> pow(nan, 0)
1.0
Распространение тихих NaN посредством арифметических операций позволяет
обнаруживать ошибки в конце последовательности операций без
тщательного тестирования на промежуточных этапах. Однако обратите внимание, что
в зависимости от языка и функции значения NaN могут быть автоматически удалены
в выражениях, которые дают постоянный результат для всех других
значений с плавающей запятой, например NaN^0, который может быть определен как 1, поэтому
обычно требуется более поздняя проверка на установленный флаг INVALID для обнаружения всех
случаев, когда вводятся NaN.
Чтобы удовлетворить желающих более строгой интерпретации того, как должна действовать функция power
, стандарт 2008 года определяет две дополнительные функции
; pown(x, n), где показатель степени должен быть целым числом, и
powr(x, y), который возвращает значение NaN всякий раз, когда параметр имеет значение NaN, иначе
возведение в степень даст неопределенную форму.
Есть ли способ проверить упомянутый выше флаг INVALID с помощью Python? Альтернативно, есть ли другой подход к обнаружению случаев, когда NaN не распространяется?
Мотивация: я решил использовать NaN для отсутствующих данных. В моем приложении отсутствие входных данных должно привести к отсутствию результата. Все работает отлично, за исключением, которое я описал.
Подробнее здесь: https://stackoverflow.com/questions/100 ... lculations
Мобильная версия