返回 float(“nan”) 的 Python 函数或操作

python function or operation that returns float("nan")

提问人:hiro protagonist 提问时间:2/23/2023 最后编辑:hiro protagonist 更新时间:2/24/2023 访问量:121

问:

IEEE浮点运算标准(IEEE 754)要求存在一个(或两个...)称为(而不是数字)。floatnan

有两种方法可以获得(据我所知)nan

nan = float("nan")
#  or
from math import nan

但是,在返回的标准库中,有没有我可以执行的数学函数?floatsnan

像(和类似)这样明显的想法不会返回,而是会提出.math.sqrt(-1)nanValueError: math domain error

或者 S 仅适用于缺少值且函数永远不应该返回的数据?nan

(是否也有返回的东西?再次,显而易见的会引发一个)。math.inf1/0ZeroDivisionError

python-3.x 浮点

评论

1赞 Karl Knechtel 2/23/2023
“但是,在标准库中,有没有一个函数或操作可以对返回 NAN 的浮点数执行?”我不明白怎么会有问题。您已经展示了两种不需要第三方库的方法。“或者 nans 只适用于值缺失且永远不应该由函数返回的数据?”如果问题应该是“为什么会有标准中定义的东西?”,我很确定标准已经解释了这一点。nan
1赞 hiro protagonist 2/23/2023
不是我的意思。可能应该改写......例如,是否有返回的数学运算?还是 stdlib 中的数学函数?这可能更准确。我的例子不是函数调用(嗯,但这是一个特例......nanfloat
0赞 Karl Knechtel 2/23/2023
FWIW,您还可以使用该模块直接“重新解释”原始数据。例如,使用半浮点格式来表示紧凑性,给出 inf,并给出 nan。但是,我认为这不符合您的要求。structstruct.unpack('e', b'\x00~')struct.unpack('e', b'\x00|')

答:

4赞 Kelly Bundy 2/23/2023 #1

math.inf - math.inf给。nan

(1e308 + 1e308或者只是给 .)1e309inf

3赞 RomanPerekhrest 2/23/2023 #2

生成 NaN

  • math.inf * 0结果转换为nan

(+∞) × 0 = NaN

  • +(在相反的符号上)和(在任意符号上)s 之间的操作/math.inf

  • 和奖励案例:生成 2 秒:nan

    In [576]: divmod(math.inf, 1)
    Out[576]: (nan, nan)