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"