如何在C++中避免NaN?求简便判断处理方法
解决NaN判断的简便方法
嘿,我太懂你这种想找快速 workaround 的心情了!你踩的坑其实是NaN的一个“奇葩”特性——NaN是JavaScript里唯一一个和自身不相等的值,所以你写的floatNumber == NaN不管什么时候都会返回false,这就是判断失效的根本原因。
下面给你几个简便且有效的处理方式:
方法1:用原生isNaN()函数
这是最常用的快速判断方式,它会帮你检查值是否无法被转换成数字:
if (!isNaN(floatNumber)) { // 执行你的逻辑 } else { return; }
⚠️ 小提醒:isNaN()有个小陷阱——它会把非数字类型(比如字符串"abc")也判定为true,如果你的场景里需要严格区分“数字类型的NaN”和“非数字值”,看下面的方法。
方法2:用严格判断的Number.isNaN()
ES6之后新增的这个方法会严格检查:只有当值本身是数字类型,并且确实是NaN时才返回true:
if (!Number.isNaN(floatNumber)) { // 执行你的逻辑 } else { return; }
方法3:利用NaN的“自不等”特性
既然NaN不等于它自己,那我们可以直接用这个特性做判断:
if (floatNumber === floatNumber) { // 不是NaN就执行(除了NaN,所有值都等于自身) } else { return; }
另外你提到的floatNumber == null无效很正常,因为null是一个独立的原始值,只有当变量是null或者undefined时,== null才会返回true,和NaN完全不沾边哦。
内容的提问来源于stack exchange,提问作者pajczur
相关产品推荐
相关产品推荐

