Javascript 用于格式化货币的几行javasript

Javascript 用于格式化货币的几行javasript,javascript,Javascript,我正在使用此功能: function formatMoney(amount, decimalCount = 2, decimal = ",", thousands = ".") { try { decimalCount = Math.abs(decimalCount); decimalCount = isNaN(decimalCount) ? 2 : decimalCount; const negativeSign = amount &l

我正在使用此功能:

function formatMoney(amount, decimalCount = 2, decimal = ",", thousands = ".") {
    try {
        decimalCount = Math.abs(decimalCount);
        decimalCount = isNaN(decimalCount) ? 2 : decimalCount;

        const negativeSign = amount < 0 ? "-" : "";

        let i = parseInt(amount = Math.abs(Number(amount) || 0).toFixed(decimalCount)).toString();
        let j = (i.length > 3) ? i.length % 3 : 0;

        return negativeSign + (j ? i.substr(0, j) + thousands : '') + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + thousands) + (decimalCount ? decimal + Math.abs(amount - i).toFixed(decimalCount).slice(2) : "");
    } catch (e) {
        console.log(e)
    }
};

如果我在parseFloat之前执行console.log,它会给我一个好的数字,如果我在parseFloat之后执行,并且它的数字高于999.99,它会给我一个负的无意义数字。

您可以使用java脚本原型方法,而不是编写自定义代码来格式化它

var n = 999999.99
n.toLocaleString()
"999,999.99"

对于他的一部分问题,这是一个很好的解决方法,但它并没有回答他的具体问题。你是如何调用这个函数的?您还可以在调用函数的位置添加代码。当然可以,var tmp1=$('.'+auctionId2+'.productValue').html();tmp1=tmp1。替换(',','@');tmp1=tmp1。替换(‘’,‘,’);tmp1=tmp1。替换('@','.');tmp1=parseFloat(tmp1);tmp1=tmp1-投标价格;var tmp2=格式货币(tmp1);$('.+auctionId2+'.auctionSavings').html(tmp2+“€”);
var n = 999999.99
n.toLocaleString()
"999,999.99"