我正在阅读文档中有效十进制字符串语法的词法定义,decimal.Decimal以下内容让我觉得奇怪:
nan ::= 'NaN' [digits] | 'sNaN' [digits]
Run Code Online (Sandbox Code Playgroud)
这对我来说看起来很奇怪,但显然数字可以包含在'NaN'之后没有任何问题,但是'NaN'之后除了数字之外的任何字符都会引发InvalidOperation.
>>> Decimal('NaN10')
Decimal('NaN10')
Run Code Online (Sandbox Code Playgroud)
所以我对此有几个问题:
NaN?NaN数字的实例与"正常"的行为有何不同NaN?NaN除了以这种方式初始化之外,有没有办法获得数字?Decimal类之外还有其他地方NaN吗?谢谢!
它是IEEE-754特征,用于区分不同种类的NaN("有效载荷").数字被编码到数字的尾数中:
>>> 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')
Run Code Online (Sandbox Code Playgroud)
有效载荷的唯一目的是用于诊断.这些NaN与"正常"NaN没有区别.
| 归档时间: |
|
| 查看次数: |
397 次 |
| 最近记录: |