关于格式化为2位小数的问题很多,但我只找到了使用.val()
的实例。如果数字是从.html()
拉出的字符串,你怎么做?
我有一张桌子,里面有一些价格。这些价格作为字符串输入到不同的小数位,例如$ 100.5,$ 59.95,$ 0。
我需要每个数字为2位小数,例如$ 100.50,$ 59.95,$ 0.00。
在某些情况下,可能还有一个£而不是$。
答案 0 :(得分:0)
我认为这就是你想要的:
$("#mytable").find("td").each(function () {
var content = this.innerHTML;
content = content.replace(/\$(\d*(?:\.\d*)?)/g, function (m1, m2) {
return "$" + parseFloat(m2).toFixed(2);
});
this.innerHTML = content;
});
这将替换任何带有数字的美元符号的发现,然后将该数字固定为两位小数并替换它。
根据您的评论,为了允许£和$,请尝试使用此代替上述内容:
content = content.replace(/([£$])(\d*(?:\.\d*)?)/g, function (m0, m1, m2) {
return m1 +""+ parseFloat(m2).toFixed(2);
});
它捕获[£$]
(任一符号之一)并将其放入第一个捕获组,并将其作为m1
传递给函数,第一组是我们不想要的整个匹配真的,我们正在把它分成几部分。
根据您的第二条评论,如果您在currency
中添加了td
课程,并且您只有一个格式化的数字,并且不想触及货币符号,试试这个:
$("td.currency").each(function () {
var content = this.innerHTML;
content = content.replace(/(\d+(?:\.\d*)?)/g, function (m1, m2) {
return parseFloat(m2).toFixed(2);
});
this.innerHTML = content;
});
请注意.currency
单元格中的数字已更新。
答案 1 :(得分:0)
如果你能使用其他Java脚本我喜欢“sugarjs”http://sugarjs.com/features#number
你可以使用这样的代码
(125.425).round(2);
>125.43
(125.425).round(-2);
>100
(4235000).format();
>"4,235,000"
(50).pad(5);
>"00050"
(23).ordinalize();
>"23rd"