【发布时间】:2013-07-17 02:30:17
【问题描述】:
根据我的经验,我知道,在进行除法运算或尝试从字符串中生成数字时,当它实际上不包含数字时,我可以获得NaN。还有其他情况,我什么时候可以得到NaN。特别是——是否有可能从乘法中得到它?
这是我在 PhoneGap 应用程序中使用的一段代码:
var g = 9.80665;
acceleration.x = (acceleration.x * g).toFixed(2);
acceleration.y = (acceleration.y * g).toFixed(2);
acceleration.z = ((acceleration.z + 1) * g).toFixed(2);
acceleration 是 base PhoneGap object,我几乎不敢相信它包含一个字符串或任何其他值,除了浮点数,这可能导致 NaN。
但是,在某些特定情况下(在某些特定设备上)我会从上面得到NaN。
用这样的代码“保护”上述值对我来说不是问题:
acceleration.x = (parseFloat(acceleration.x) || 0) + ' m/s\u00b2';
acceleration.y = (parseFloat(acceleration.y) || 0) + ' m/s\u00b2';
acceleration.z = (parseFloat(acceleration.z) || 0) + ' m/s\u00b2';
但是,我真的很好奇,我什么时候以及为什么在只乘以一些值之后可以得到NaN?
顺便说一句:我在 MDN 上读过 this,在 Stack Overflow 上也读过 many related answers here,但没有给我任何帮助或回答我的问题。
【问题讨论】:
-
为什么不同时发布加速对象(或至少相关属性)的console.log?现在,我唯一看到的是“其中一个属性未定义”
-
@Stephen:我不能为此发布 console.log,因为(正如我所写的)它只发生在某些情况下(在某些移动设备上)。此外,问题是“什么时候我可以从 Javascript 中的乘法中得到
NaN”,而不是“我的 PhoneGap 代码有什么问题”。也许我应该在“程序员”问这个?
标签: javascript cordova numbers nan