JavaScript. Как выровнять вывод значения числа по определённому формату?
Есть код, который выводит различные числа в браузере `some text ${some_num} some text`. Необходимо отображать это число в формате XX.XXX. Например 12.142 , 98.234 или 00.000. т.е. необходимо отображать 2 знака с лева и 3 знака с права. Как это сделать в JS?
Ответы (3 шт):
Автор решения: zhurof
→ Ссылка
function formatNumber(num){
num = +num;
if(!isFinite(num)) return false;
var result = num.toFixed(3);
if(num >=0 && num < 10) result = '0' + result;
if(num < 0 && num > -10) result = result.replace('-','-0');
return result;
}
<input type="number" oninput="console.log(formatNumber(this.value))">
Автор решения: Dan Konshin
→ Ссылка
Попробуйте так:
new Intl.NumberFormat(options={minimumIntegerDigits:2, maximumFractionDigits: 3, minimumFractionDigits:3}).format(some_number)
Но поточнее бы что делать в случаях > 100, < 10 и тп
Автор решения: radar4ick
→ Ссылка
Еще один вариант с использованием последних фишек JS )
function format(value) {
value = !!value ? '' + value : '0.0'; // проверяем валидность вхождения и переводим в строку
const parts = value.split('.'); // разбиваем по точке
return parts[0].padStart(2, '0') + '.' + (parts[1] ?? '0').padEnd(3, '0'); //возвращаем отформатированную строку и если вдруг дали нам целое число - подставляем в правую часть '0'
}
console.log(format());
console.log(format(1));
console.log(format(20));
console.log(format(300));
console.log(format(25.25));
console.log(format(250.250));