var a = 12.34;
a.toLocaleString() // 12,34
var 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"