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

标签 javascript casting

我有以下代码:

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/

相关文章:

javascript - Google 网站可折叠列表

javascript - 从 ActionScript 调用 ExtJS 函数

javascript - $watchGroup 与 $watchCollection?

c# - 由 FullTypeName 转换

c++ - 指向函数签名中 const 的智能指针

.net - NHibernate 查询与 Projections.Cast 到 DateTime

存储为字符串的时间戳的 SQL 平均时间

javascript - 按照以下格式对 extjs4 中的文本字段进行验证检查?

javascript - 在 Laravel 中发布到数组错误

swift - 为什么我们不能转换为具有关联类型的协议(protocol)类型,而是使用泛型达到相同的效果?