Округление любых чисел до формата X.XX на JavaScript
Есть несколько полей input, которые отображают результат вычисления функции. Практически всегда эти числа выглядят как 6579.186210714762, 12571.174950660548 и тд.
Для округления я использую такую функцию:
const roundResult = function(value) {
return (value !== '' && !Number.isNaN(Number(value))) ? (Number(value) / 1000).toFixed(2) : value;
}
Этого вполне хватает, чтобы округлять все вычисляемые числа до формата X.XX.
Сложности появляются, когда я пытаюсь импортировать в своё приложение сохранённый ранее проект с уже полученными вычислениями. Опуская детали, хочу сказать, что в этом случае в указанные инпуты попадают уже округлённые числа вида 6.58, 12.57 и тд., которые всё та же функция roundResult повторно пытается округлить.
Я довольно долго копался, пытаясь решить эту, казалось бы, тривиальную задачу, но так и не смог придумать более-менее адекватного решения. Как можно обработать входящие числа таким образом, чтобы только сырые вычисления округлялись?
Буду благодарен любой помощи.
Ответы (3 шт):
Есть функция toFixed(), поддерживает округление
const numObj = 12345.6789;
numObj.toFixed(2);
Есть ли возможность превратить число в строку, разбить по точке и потом проверить длину элемента под индексом 1? Я бы так и сделал
String(num).split('.')[1].length > 2
Эта проверка позволит узнать необходимо ли вызывать вашу функцию
const roundResult = (value) => {
if (isNaN(value)) {
return NaN;
}
const isRoundNeeded = parseInt(value).toString().length > 2;
if (isRoundNeeded) {
return (value / 1000).toFixed(2);
}
return value;
};
console.log(roundResult(6579.186210714762));
console.log(roundResult(6.58));