Что такое inf и nan?
Просто вопрос, который я немного смущен о
Итак, я возился с float('inf')
и задавался вопросом, для чего он используется.
Также я заметил, что если я добавлю -inf + inf
, я получаю nan
, это то же самое, что и Zero или нет.
Я смущен тем, что использует эти два значения.
Также, когда я делаю nan - inf
, я не получаю -inf
Я получаю nan
Я уверен, что все это довольно просто, но я наткнулся на них и не знал, что они делают.
Ответы
Ответ 1
inf
- бесконечность - значение, большее любого другого значения. -inf
поэтому меньше любого другого значения.
nan
означает Not A Number, и это не равно 0
.
Хотя положительную и отрицательную бесконечность можно считать симметричной относительно 0
, то это же можно сказать для любого значения n
, что означает, что результат добавления двух выходов nan
. Эта идея обсуждается в этом вопросе math.se.
Поскольку nan
(буквально) не является числом, вы не можете делать с ним арифметику, поэтому результат второй операции также не является числом (nan
)
Ответ 2
Inf
- бесконечность, это число "больше, чем все остальные числа". Попробуйте вычесть все, что вы хотите от него, это не уменьшится. Все числа < Inf
. -Inf
похож, но меньше, чем все.
NaN
означает не-число. Если вы попытаетесь выполнить вычисления, которые просто не имеют смысла, вы получите NaN
. Inf - Inf
является одним из таких вычислений. Обычно NaN
используется только для обозначения того, что некоторые данные отсутствуют.
Ответ 3
nan
означает "не число", значение с плавающей точкой, которое вы получаете, если выполняете расчет, результат которого не может быть выражен в виде числа. Любые вычисления, выполненные с помощью nan
, также приведут к nan
.
inf
означает бесконечность.
Например:
>>> 2*float("inf")
inf
>>> -2*float("inf")
-inf
>>> float("inf")-float("inf")
nan
Ответ 4
Вы говорите:
когда я делаю nan - inf
, я не получаю -inf
, я получаю nan
Это связано с тем, что любая операция, содержащая nan
в качестве операнда, вернет nan
.
Сравнение с nan
вернет неупорядоченный результат.
>>> float('Inf') == float('Inf')
True
>>> float('NaN') == float('NaN')
False