2011-04-07 72 views
3

我只是想将数字(如果您愿意的话)添加到1.5和1.47等数字,并使其等于1.97。如何在Javascript中添加美元金额

这是如何完成的?我不知道我不知道该怎么做! :)

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); 

回答

8

使用parseFloat而不是parseInt

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

使用parseFloat,不parseInt函数。 parseInt将把所有东西都变成一个整数。

此外,为什么你使用我认为是PHP多次输出相同的值到JavaScript?输出一次并将其存储在一个变量中!这也可以让你把JavaScript放在一个单独的文件中,并通过CDN缓存/传递它。

+0

谢谢。将更新。 – Ontonomo 2011-04-07 14:37:00

0

1.47 + 1.5其中两个数字都是实数不等于1.97。也许这是你的问题?

否则,你的问题是什么?上述代码有什么问题?一个jsFiddle能证明它吗?

1

使用'parsefloat()'来提取数字。

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和使用加法赋值运算符(+=)优化你的代码略有