【发布时间】:2015-07-18 10:45:25
【问题描述】:
我正在尝试使用 javascript 创建一个函数,该函数显示所有带两位小数的数字,并每三位添加逗号(1,000 10,000 100,000 等)。
一开始我是这样的:
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 = 10,586.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:
parseFloat((num).toFixed(2)).toLocaleString().replace(/\.([0-9])$/, ".$10")
标签: javascript