如果你通过Lua解释器运行它
print(0/0)
print(-(0/0))
Run Code Online (Sandbox Code Playgroud)
它输出
-1.#IND
1.#QNAN
Run Code Online (Sandbox Code Playgroud)
根据我的理解,他们都是安静的非数字,但为什么是#QNAN平等-#IND(当我说平等时我的意思是他们打印相同的东西,因为我知道NaN != NaN)
知道a NaN是否#IND或者#QNAN如果是,有什么益处是有益处的.
86指定一种特殊类型的QNAN,所谓的QNAN浮点不定(在第4.8.3.7 IA32手册):
对于浮点数据类型编码(单精度,双精度和双扩展精度),保留一个唯一编码(QNaN)用于表示特殊值QNaN浮点不定.该的x87 FPU和SSE/SSE2/SSE3/SSE4.1/AVX扩展返回这些不确定值,以一些回应屏蔽浮点异常.表4-3显示了用于QNaN浮点无限期的编码.
这是-1.#IND由C库实现打印的内容.
在您的情况下,该0/0操作在FPU上触发屏蔽的无效操作异常,由无限返回值发出信号.在-(0/0)情况下,你喂此不定值作为输入到取反操作,它返回一个QNAN.
不同浮点运算给出不同错误值的原因是为了便于调试.如果经验丰富的开发人员确切知道返回的NaN值类型,则可以更轻松地追踪错误.对于非调试目的,由于Indefinite只是一种特殊的QNaN,你通常可以完全忽略它们之间的区别.
| 归档时间: |
|
| 查看次数: |
2100 次 |
| 最近记录: |