停止 javascript 自动从十进制转换为字符串

Stop javascript automatically casting from decimal to string

本文关键字:转换 字符串 十进制 javascript 停止      更新时间:2023-09-26

我有以下一段代码:

if(netAnnualBilling == null){
                        netAnnualBilling = 0;
                        parseFloat(netAnnualBilling);
                }
                parseFloat(netAnnualBilling);
                annualBillingCount = (annualBillingCount + netAnnualBilling);
                parseFloat(annualBillingCount);

我的两个变量 netYearualBilling 和 YearalBillingCount 都是类型数字。但是,当我到达这一行时:

            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;

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

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

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

parseFloat() 不会更改值,而是返回强制转换的值。 你需要:

netAnnualBilling = parseFloat(netAnnualBilling)

试试这个:

if(netAnnualBilling == null) {
     netAnnualBilling = 0;
}
netAnnualBilling = parseFloat(netAnnualBilling);
annualBillingCount = parseFloat(annualBillingCount);
annualBillingCount += netAnnualBilling;