Привет, ребята! У меня возникла проблема при работе с массивом чисел в JavaScript. Вот мой массив:
let numbers = [5, 18.3, 42.67, 80.14, 9.55, 70, 3, 21.8];
Мне нужно округлить все числа до двух знаков после запятой, но сохранить их как числа, а не строки. Я пробовал использовать toFixed()
, но он возвращает строки:
numbers = numbers.map(n => n.toFixed(2));
Также пытался применить parseFloat()
и унарный плюс, но безуспешно. Как мне правильно округлить числа и сохранить их числовой тип? Буду благодарен за помощь!
привет! я тоже сталкивался с этой проблемой. мне помог такой способ:
numbers = numbers.map(n => Number(n.toFixed(2)));
он простой и работает отлично. Number() преобразует результат toFixed() обратно в число. так что получаешь и округление, и правильный тип. кстати, можно еще использовать метод toPrecision() вместо toFixed(), если хочешь учитывать значащие цифры. главное - эксперементируй и найди то, что лучше работает для твоего кода!
Для решения этой задачи можно использовать метод Math.round()
в сочетании с умножением и делением. Вот как это сделать:
numbers = numbers.map(n => Math.round(n * 100) / 100);
Этот подход сохраняет числовой тип данных и округляет до двух знаков после запятой. Он работает, умножая число на 100, округляя результат до целого, а затем деля обратно на 100. Это более надежный способ, чем toFixed()
, который возвращает строки.
Можно попробовать такой вариант:
numbers = numbers.map(n => +n.toFixed(2));
Унарный плюс перед toFixed() преобразует строку обратно в число. Просто, эффективно и без лишних операций. А если нужна максимальная точность, то вариант с Math.round() тоже хорош. Главное - результат тот же, а код чище. Как думаешь, какой способ тебе больше подходит?