Если вам нужно отформатировать числа в браузере, не подключайте для этого сторонние библиотеки и не пишите велосипеды, а используйте нативный Intl.NumberFormat
.
Простой пример:
const numberFormatter = new Intl.NumberFormat();
numberFormatter.format(12345.67); // -> 12 345,67
По умолчанию NumberFormat
использует правила системной локали. При необходимости можно указать нужную локаль: new Intl.NumberFormat(’en-US’)
. Вторым аргументом передаются опции вроде минимального/максимального количества знаков после запятой, подробнее в документации.
Intl
поддерживается начиная с IE 11 и Safari 10, на мобильных поддержка хуже, поэтому нужно при открытии страницы проверять поддержку и при её отсутствии подгружать полифил.
Проще всего использовать сервис Polyfill.io от Financial Times:
<script src="https://cdn.polyfill.io/v2/polyfill.min.js?features=Intl.~locale.en"></script>
Polyfill.io проверяет по юзерагенту, какие фичи не поддерживает браузер, и отдаёт полифилы только для них.