Intl.NumberFormat сделает это, и вы можете установить точность или превратить ее в представление валюты.
Разделитель тысяч варьируется в зависимости от региона (страны)
Вы упомяните ;
, но для меня в en-US это запятая ,
Intl.NumberFormat будет использовать правильный разделитель, просто указав локаль.
Вы можете создать один (или несколько) заранее или создайте их по мере необходимости.
const en_formatter = new Intl.NumberFormat('en-US', { maximumSignificantDigits: 8, maximumFractionDigits: 3 });
const en_currency = new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD' });
let value = 54321.123;
let formatted = en_formatter.format(value);
console.log(formatted);
let currency = en_currency.format(value);
console.log(currency);