如何在Javascript中将美元金额相加

3

我只想把两个数字(货币)相加,例如 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);
5个回答

8

正如其他人所提到的,您应该使用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调用并使用加法赋值运算符(+=)稍微优化了您的代码。

8

使用parseFloat代替parseInt

 parseFloat("1.19") + parseFloat("2.82") == 4.01

1
使用 'parseFloat()' 提取数字。

0

使用 parseFloat,而不是 parseInt。parseInt 会将所有内容转换为整数。

另外,为什么您要使用我假设是 PHP 的方式多次输出相同的值到 JavaScript 呢?输出一次并将其存储在变量中!这也可以让您将 JavaScript 放入单独的文件中,并通过 CDN 缓存/传递它。


-2

当两个实数1.47和1.5相加时,结果并不等于1.97。也许这就是你的问题所在?

否则,请问你有什么问题?你在上述代码中遇到了什么问题?能否通过jsFiddle演示一下?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接