为什么我在这个javaScript代码中使用NaN
Why I got NaN in this javaScript code?
首先我测试每个变量都得到一个数值:
09-11 18:15:00.420:
d_drop: -1.178791867393647
drop_at_zero: 0.0731037475605623
sightHeight: 4.5
d_distance: 40
zeroRange: 10
09-11 18:15:00.420:
d_drop: true
drop_at_zero: true
sightHeight: true
d_distance: true
zeroRange: true
function isNumber (o) {
return ! isNaN (o-0) && o != null;
}
var d_drop; // in calculation this gets value 1.1789
var d_path = -d_drop - sightHeight + (drop_at_zero + sightHeight) * d_distance / zeroRange;
console.log("Path: " + d_path + " cm");
并且在日志中:
09-11 18:15:00.430: D/CordovaLog(1533): Path: NaN cm
为什么?我试着想了几个小时,但没有成功,也许有人有主意,我没有!
谢谢!萨米
-------答案是在使用+操作数时解析每个变量----------------
var d_path=parseFloat(-d_drop)-parseFloat;
如果任意一个操作数是字符串,则加法运算符+
将把事物强制转换为字符串。在使用它们之前,您需要将所有输入(d_drop
、sightHeight
等)解析为数字。
以下是+
过载工作原理的演示。请注意减法运算符-
是如何不重载并始终将操作数强制转换为数字的:
var numberA = 1;
var numberB = 2;
var stringA = '3';
var stringB = '4';
numberA + numberB // 3 (number)
numberA - numberB // -1 (number)
stringA + stringB // "34" (string)
stringA - stringB // -1 (number)
numberA + stringB // "14" (string)
numberA - stringB // -3 (number)
http://jsfiddle.net/jbabey/abwhd/
至少有一个数字是字符串。sightHeight
是最有可能的罪魁祸首,因为它会与drop_at_zero
连接,产生一个有两个小数点的"数字"——这样的"数字"不是数字,因此NaN
。
解决方案:使用parseFloat(varname)
转换为数字。
如果使用-d_drop
作为变量名,这可能是罪魁祸首。变量必须以字母开头。
var d_drop = -1.178791867393647,
drop_at_zero = 0.0731037475605623,
sightHeight = 4.5,
d_distance = 40,
zeroRange = 10;
var d_path = d_drop - sightHeight + (drop_at_zero + sightHeight) * d_distance / zeroRange;
console.log("Path: " + d_path + " cm"); // outputs: Path: 12.613623122848603 cm
相关文章:
- 从桌面读取python文件时高亮显示代码
- 如何将函数包装在函数中以避免代码重复
- 通过单击表单中的按钮,在代码生成中使用javascript生成字母数字代码
- 货币代码为欧元-金额的格式不应包含小数
- Regex代码只允许一个空格
- 如何将屏幕分辨率乘以 80%,然后在代码中使用
- 为什么我在这个javaScript代码中使用NaN
- 为什么这个代码返回NaN
- NaN 错误代码有什么问题
- 为什么这个 JavaScript 地板数学代码返回 nan
- Javascript代码在执行输出中返回undefined:Nan
- 代码总是返回NAN
- 在Node.js附加代码中使用Nan来创建数组
- 代码会吐出7次NaN
- 我在哪里放置NaN代码
- 我的代码Javascript出了什么问题?我在警报窗口中收到的消息是NaN
- 我如何摆脱NaN在我的JavaScript和HTML代码的文本框
- JavaScript代码返回NaN而不是数值
- 如何将代码中的NaN更改为“0”或“正在工作”?
- 我如何摆脱在我的JavaScript代码文本框中的NaN