2

我有一个具有以下几行的函数:

payementReceived=data.toJSON().total;
paymentTotal=$("#paymentTotal").html();

console.log(typeof(parseInt(paymentTotal)));                  
console.log(typeof(parseInt(paymentReceived)));
console.log(parseInt(paymentTotal)-parseInt(paymentReceived));

我在控制台中得到以下信息

number
number
NaN

我不明白两者是否都是数字,那么为什么它不能给出正确的减法结果。

4

4 回答 4

2

这些值是number它们的内容是一个数字,但这并不意味着该数字是有效的。

typeof NaN === 'number'

如果您从减法中得到NaN回报,则您的一个或两个输入值都是无效数字。

于 2013-05-16T07:41:41.287 回答
0

问题是因为未定义的变量使用了“paymentReceived”,如果您确定结果是一个数字,您总是可以使用parseInt

console.log(parseInt(paymentTotal)-parseInt(payementReceived));
于 2013-05-16T08:05:22.370 回答
0

只是一个有趣的想法:

if (typeof n === "number" && n+1 !== n) {
    // this is a valid number
}

invalid+1 仍然无效,因此它可以检查无效数字。

于 2013-05-16T08:42:47.277 回答
-1

试试下面的代码

console.log(Number(paymentTotal)-Number(paymentReceived));

于 2013-05-16T08:39:02.760 回答