我有以下代码:
if(netAnnualBilling == null){
netAnnualBilling = 0;
parseFloat(netAnnualBilling);
}
parseFloat(netAnnualBilling);
annualBillingCount = (annualBillingCount + netAnnualBilling);
parseFloat(annualBillingCount);
我的两个变量 netAnnualBilling 和 annualBillingCount 都是数字类型。但是,当我到达这一行时:
annualBillingCount = (annualBillingCount + netAnnualBilling);
javascript 似乎将 annualBillingCount 转换为 String 类型并将两个数字附加在一起,而不是像它应该的那样添加或减去。示例:
annualBillingCount = 0;
netAnnualBilling = -1403.30
The result of the above code will show annualBillingCount to be equal to : 0-1403.80
每次弹出这些变量时,我都尝试过 ParseFloat,但我没有任何运气。怎么回事?
最佳答案
如果您想确保变量用作数字,您可以简单地在前面加上一元加号运算符:
annualBillingCount = +annualBillingCount + +netAnnualBilling;
将强制每个操作数被视为一个数字。
编辑 Heres a basic fiddle使用下面的代码显示了两个字符串的不同使用一元转换的添加:
var onetwo = "12";
var threefour = "34";
alert(onetwo + threefour); // string + string, so "12" + "34" = "1234"
alert(+onetwo + threefour); // number + string, so 12 + "34" = "12" + "34" = "1234"
alert(onetwo + +threefour); // string + number, second will be coerced back to string, so "12" + "34" = "1234"
alert(+onetwo + +threefour); // number + number, so 12 + 34 = 46
关于javascript - 停止javascript自动从十进制转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19496708/