1

我有以下代码:

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,但我没有任何运气。这是怎么回事?

4

3 回答 3

6

如果您想确保变量用作数字,您可以简单地添加一元加运算符:

annualBillingCount = +annualBillingCount + +netAnnualBilling;

将强制将每个操作数视为一个数字。

编辑 这是一个基本的小提琴,使用下面的代码显示添加了两个具有不同用途的一元强制转换的字符串:

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
于 2013-10-21T14:07:05.343 回答
1

parseFloat()不会更改值,它会返回转换后的值。你需要:

netAnnualBilling = parseFloat(netAnnualBilling)
于 2013-10-21T14:05:45.040 回答
0

尝试这个:

if(netAnnualBilling == null) {
     netAnnualBilling = 0;
}
netAnnualBilling = parseFloat(netAnnualBilling);
annualBillingCount = parseFloat(annualBillingCount);
annualBillingCount += netAnnualBilling;
于 2013-10-21T14:10:48.350 回答