Пишем собственный говнокод:
function shortNumber(val) {
const abs = Math.abs(val);
const prefixIndex = Math.log10(abs) / 3 | 0;
return (
(val < 0 ? '-' : '') +
(Number.isFinite(val) ? Math.round(abs / (10 ** (prefixIndex * 3))) : 'inf') +
'KMGTPEZY'.charAt(~-prefixIndex)
);
}
shortNumber(99) // '99'
shortNumber(1945) // '2K'
shortNumber(-5839465) // '-6M'
shortNumber(7e10) // '70G'
shortNumber(Infinity) // 'inf'
Или пользуемся готовым инструментом:
const { format } = Intl.NumberFormat('en-US', { notation: 'compact' });
format(423) // '423'
format(-1111) // '-1.1K'
format(15347832) // '15M'
format(48237464278237) // '48T'
format(1/0) // '∞'