有很多关于格式化到小数点后 2 位的问题,但我只找到了他们使用.val()
. 如果数字是从中拉出的字符串,你会怎么做.html()
?
我有一张桌子,上面有一些价格。这些价格以不同小数位的字符串形式提供给我,例如 100.5 美元、59.95 美元、0 美元。
我需要将每个数字保留到小数点后 2 位,例如 $100.50、$59.95、$0.00。
在某些情况下,也可能有 £ 而不是 $。
有很多关于格式化到小数点后 2 位的问题,但我只找到了他们使用.val()
. 如果数字是从中拉出的字符串,你会怎么做.html()
?
我有一张桌子,上面有一些价格。这些价格以不同小数位的字符串形式提供给我,例如 100.5 美元、59.95 美元、0 美元。
我需要将每个数字保留到小数点后 2 位,例如 $100.50、$59.95、$0.00。
在某些情况下,也可能有 £ 而不是 $。
如果您能够使用其他 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"
我认为这就是你想要的:
$("#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
单元格内的数字得到了更新。