我正在阅读文档中有效十进制字符串语法的词法定义,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 次 |
最近记录: |