var a = 12.34;
a.toLocaleString() // 12,34var a = 12.34;
a.toFixed(2).toLocaleString() // 12.34 Number.toFixed() на удивление возвращает строку, для строки нужно что-то типа .replace('.', ',')Math.round() и потом .toLocaleString().toLocaleString() использует локаль браузера, которая не всегда бывает нужная, да ещё и вставит пробелы или запятые между разрядами.toLocaleString() принимает локаль в качестве параметра
Return value
A string representing the given number using fixed-point notation.
А как быть, если нужно сделать и toFixed() и toLocaleString('ru-RU')? К примеру, отобразить 1234.567 с точностью пять знаков и форматированием toLocaleString() (1 234,56700)?
new Intl.NumberFormat(undefined, { maximumFractionDigits: 5, minimumFractionDigits: 5 }).format(1234.567)
> "1 234,56700"
new Intl.NumberFormat('ru-RU', { maximumFractionDigits: 5, minimumFractionDigits: 5 }).format(1234.567)
> "1 234,56700"