Как преобразовать строки в числа с двумя знаками после запятой в JavaScript?

Привет, ребята! У меня возникла проблема при работе с массивом чисел в 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() тоже хорош. Главное - результат тот же, а код чище. Как думаешь, какой способ тебе больше подходит?