2015-05-07 351 views
2

我试图用javascript创建一个函数,显示所有带有两个小数点的数字,并每三位数字(1,000 10,000 100,000等)添加逗号。格式化逗号和小数点后的数字用Javascript

起初,我有这样的:

var formatNumber = function(num) { 
    return parseFloat((num).toFixed(2)).toLocaleString(); 
}; 

这工作得很好,但有一个例外。

1.2!= 1.20在最终输出中。它只是显示为1.2

但其他一切都很好。 124.5879697 = 124.59,10000 = 10,000和10586.357 = 10586.36

问题是最终输出将显示为金钱,因此显示10000为10,000美元罚款。但1.2美元显示1.2美元看起来有点关闭。

为了解决这个问题我尝试添加了以下修改:

var formatNumber = function(num) { 
    return parseFloat((Math.round(num*100)/100)).toFixed(2).toLocaleString(); 
}; 

此进行所有的东西到小数点后两位,这是很好的,但它似乎已经去激活的toLocaleString因为现在没有任何显示逗号。

我正在寻找使用纯JavaScript而不是jQuery。似乎关于这个话题有很多关于这个或那个问题的js问题,但是没有把两者结合起来。

谢谢。

+0

你可以测试,看看有多少数字是小数点后的工作,如果它只有一个,增加一个0到它的结束? –

+0

尝试这个正则表达式追加0如果小数点后的单个数字: 'parseFloat((num).toFixed(2))。toLocaleString()。replace(/ \。([0-9])$ /,“。$ 10” )' –

回答

3

这似乎

var f = function(num) { 
    return parseFloat(num).toFixed(2).toLocaleString(); 
}; 
+0

这不适用于整数。看到[fiddle](http://jsfiddle.net/razs3mjb/) –

相关问题