pax*_*blo 31
是的,通过使用a NaN不等于任何其他数字的事实,包括它自己.
当你考虑什么NaN意思时,这是有道理的,你创造了一个实际上不能代表"正常"浮点值的价值的事实.
所以,如果你创建两个你不知道它们是什么的数字,你几乎不能认为它们是平等的.它们可能是但是,考虑到数字的可能性相当大(实际上是无限的),两个相同数字的可能性很小:-)
你可以找到一个函数(实际上是宏)isnan(在math.hC和cmathC++中)或只是使用一个NaN值不等于自身的属性:
if (myFloat != myFloat) { ... }
Run Code Online (Sandbox Code Playgroud)
如果由于某些奇怪的原因,你的C实现没有isnan(它应该,因为标准要求它),你可以编写自己的代码,如:
int isnan_float (float f) { return (f != f); }
Run Code Online (Sandbox Code Playgroud)
在Linux/gcc下,有isnan(double),符合BSD4.3.
C99提供fpclassify(x)和isnan(x).
(但C++标准/编译器不一定包含C99功能.)
std :: numeric_limit <>应该有一些方法......检查......
卫生署.我应该知道......之前已经回答过这个问题... 在C++中 使用NaN 检查C++中的双重(或浮点)是否为NaN ?http://bytes.com/topic/c/answers/588254-how-check-double-inf-nan
| 归档时间: |
|
| 查看次数: |
22067 次 |
| 最近记录: |