Python Decimal obj中NaN后数字的含义

2024-10-03 19:28:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在阅读^{}文档中有效十进制字符串语法的词法定义,以下内容让我觉得有些奇怪:

nan            ::=  'NaN' [digits] | 'sNaN' [digits]

这在我看来真的很奇怪,但是很明显数字可以包含在“NaN”之后,没有任何问题,但是除了“NaN”后面的数字之外的任何字符都会引起InvalidOperation。在

^{pr2}$

所以我有几个问题要问:

  1. 作为NaN一部分的数字是什么意思?在
  2. 带数字的NaN实例的行为与“普通”NaN有何不同?在
  3. 除了用这种方式初始化之外,有没有其他方法可以获得带数字的NaN?在
  4. 除了Decimal类之外,Python中还有其他地方可以在NaN后面加上数字吗?在

谢谢!在


Tags: 实例字符串文档定义方式语法数字nan
1条回答
网友
1楼 · 发布于 2024-10-03 19:28:19

区分不同种类的nan(“有效载荷”)是一个IEEE-754 feature。数字被编码成数字的尾数:

>>> Decimal("NaN456").as_tuple()
DecimalTuple(sign=0, digits=(4, 5, 6), exponent='n')
>>> Decimal("NaN123").as_tuple()
DecimalTuple(sign=0, digits=(1, 2, 3), exponent='n')
>>> Decimal("NaN").as_tuple()
DecimalTuple(sign=0, digits=(), exponent='n')

有效载荷的唯一用途是诊断。这些nan与“正常”nan没有区别。在

相关问题 更多 >