我只想添加数字(货币,如果你愿意),如1.5和1.47,并将它等于1.97。
这是如何实现的?我不知道我不知道怎么做! :)
var discountAmount = 0;
var ogCookie = < %= strJsonCookie % >
for (var i = 0; i < ogCookie.products.length; i++) {
discountAmount = parseFloat(discountAmount) + parseFloat(ogCookie.products[i].discount_amount);
}
alert(discountAmount);
答案 0 :(得分:8)
使用parseFloat
代替parseInt
:
parseFloat("1.19") + parseFloat("2.82") == 4.01
答案 1 :(得分:6)
正如其他人所提到的,您应该使用parseFloat
代替parseInt
。但是,由于精度问题,当您显示计算结果时,您可能还需要使用.toFixed(2)
。使用您的示例,1.5 + 1.47
可能会产生2.9699999999999998
- 使用.toFixed(2)
会将此不精确性更正为2.97
。
var discountAmount = 0;
var ogCookie = < %= strJsonCookie % >
for (var i = 0; i < ogCookie.products.length; i++) {
discountAmount += parseFloat(ogCookie.products[i].discount_amount);
}
// Output at 2 decimal places
alert(discountAmount.toFixed(2));
另请注意,我还通过删除对parseFloat
的不必要调用并使用添加赋值运算符(+=
)来优化代码稍微。
答案 2 :(得分:1)
使用'parsefloat()'来提取数字。
答案 3 :(得分:0)
使用parseFloat,而不是parseInt。 parseInt会将所有内容都变成整数。
另外,为什么你使用我假设的php将相同的值输出到javascript几次?输出一次并将其存储在变量中!这也可以让你将javascript放在一个单独的文件中,并通过CDN缓存它/提供它。
答案 4 :(得分:-1)
1.47 + 1.5这两个数字都是实数不等于1.97。也许那是你的问题?
否则,你的问题是什么?您使用上述代码有什么问题? jsFiddle可以演示吗?