0

有很多关于格式化到小数点后 2 位的问题,但我只找到了他们使用.val(). 如果数字是从中拉出的字符串,你会怎么做.html()

我有一张桌子,上面有一些价格。这些价格以不同小数位的字符串形式提供给我,例如 100.5 美元、59.95 美元、0 美元。

我需要将每个数字保留到小数点后 2 位,例如 $100.50、$59.95、$0.00。

在某些情况下,也可能有 £ 而不是 $。

4

2 回答 2

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"
于 2013-08-23T03:05:52.197 回答
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单元格内的数字得到了更新。

于 2013-08-23T02:57:22.543 回答