我需要一个带小数的千位分隔符,每3个数字用一个点(.(分隔。如果金额有小数,请不要删除逗号(,(
我有一种方法根本不起作用。
export function formatAmount(object)
{
let format = new Intl.NumberFormat('es-VE', { maximumFractionDigits: 10 });
return format.format(object);
}
使用此函数,如果我传递一个值,例如
3253,55 -> 3253,55
10000 -> 10.000
25000,55 -> 25.000,55
15000,5421 -> 15.000,5421
基本上,如果数千的数量至少有5个数字,它会很好地工作,而4个数字则不会与点分离。我需要的结果是以下
3253,55 -> 3.253,55
1000 -> 1.000
50000,20 -> 50.000,20
15000,5421 -> 15.000,5421
我不知道如何在不影响小数的情况下添加4位分隔符。
我在的其他问题中找到了这个可能的解决方案
String(num).replace(/(?<!..*)(d)(?=(?:d{3})+(?:.|$))/g, '$1.')
但这对我不起作用,因为它将小数中的逗号(,(转换为点(.(
3253,50 -> 3.253.50
如何获得所需的结果,在不受小数点影响的情况下用点分隔数千?
试试这个
const formatNumber = (number) => {
const value = number + '';
const list = value.split('.');
const prefix = list[0].charAt(0) === '-' ? '-' : '';
let num = prefix ? list[0].slice(1) : list[0];
let result = '';
while (num.length > 3) {
result = `,${num.slice(-3)}${result}`;
num = num.slice(0, num.length - 3);
}
if (num) {
result = num + result;
}
return `${prefix}${result}${list[1] ? `.${list[1]}` : ''}`;
};
console.log(formatNumber(3253.55));
console.log(formatNumber(50000.20));