Как округлить число до одного знака после запятой в JavaScript?
Как правильно округлить число в JavaScript до одного знака после запятой (с правильным округлением)?
Я пробовал умножить на 10, округлить, затем разделить на 10, но в результате остаются два десятичных знака после целого числа.
5 ответ(ов)
Функция Math.round(num * 10) / 10
действительно работает для округления числа до одного десятичного знака. Привожу пример:
var number = 12.3456789;
var rounded = Math.round(number * 10) / 10;
// rounded равен 12.3
Если вам нужно оставить одну десятичную цифру, даже если это будет 0, то вы можете использовать метод toFixed
:
var fixed = rounded.toFixed(1);
// 'fixed' всегда будет содержать одну десятичную цифру
// ЗАМЕТКА: .toFixed() возвращает строку!
// Для преобразования обратно в числовой формат
parseFloat(number.toFixed(2));
// 12.34
// Но это не сохранит запрашиваемые нулевые разряды
// Поэтому убедитесь, что этот шаг — последний перед выводом,
// и используйте числовой формат во время вычислений!
Опираясь на этот принцип, вот полезная функция для округления, которая принимает точность:
function round(value, precision) {
var multiplier = Math.pow(10, precision || 0);
return Math.round(value * multiplier) / multiplier;
}
... использование ...
round(12345.6789, 2); // 12345.68
round(12345.6789, 1); // 12345.7
... по умолчанию округляется до ближайшего целого числа (точность 0) ...
round(12345.6789); // 12346
... и может использоваться для округления до ближайших 10 или 100 и так далее...
round(12345.6789, -1); // 12350
round(12345.6789, -2); // 12300
... и корректное обращение с отрицательными числами ...
round(-123.45, 1); // -123.4
round(123.45, 1); // 123.5
... и можно комбинировать с toFixed
, чтобы форматировать результат в виде строки ...
round(456.7, 2).toFixed(2); // "456.70"
Ваш код выглядит правильно, и он действительно должен округлять число до одного знака после запятой. В вашем случае, number.toFixed(1)
вернет строку "123.5"
, что соответствует ожидаемому результату.
Вот как это работает:
- Метод
toFixed()
форматирует число, округляя его до указанного количества десятичных знаков. - В вашем примере вы указали
1
, что означает, что вы хотите получить число с одним знаком после запятой.
Таким образом, когда вы выполняете console.log(number.toFixed(1))
, вы получите 123.5
в виде строки.
Если хотите получить это число в виде числа, вам нужно преобразовать его в тип Number
, например, так:
var number = 123.456;
var roundedNumber = parseFloat(number.toFixed(1));
console.log(roundedNumber); // 123.5
Надеюсь, это поможет! Если у вас есть другие вопросы, не стесняйтесь задавать.
Вы можете сделать следующее:
let n = 1.25;
let result = Number(n).toFixed(1);
// вывод строки: 1.3
Метод toFixed(1)
округляет число до одного знака после запятой, возвращая строку. Обратите внимание, что результат будет "1.3" как строка, а не как число.
Я голосую за использование toFixed()
, но, для справки, вот еще один способ, который использует побитовые сдвиги для преобразования числа в целое. Этот метод всегда округляет в сторону нуля (вниз для положительных чисел и вверх для отрицательных).
var rounded = ((num * 10) << 0) * 0.1;
Однако, поскольку здесь нет вызовов функций, этот метод очень быстрый. 😃
А вот еще один способ, использующий регулярные выражения:
var rounded = (num + '').replace(/(^.*?\d+)(\.\d)?.*/, '$1$2');
Я не рекомендую использовать вариант со строками, просто упоминаю его.
Для округления числа до одного знака после запятой можно использовать метод Math.round()
. В вашем примере переменная num
содержит значение 34.7654
. Чтобы округлить это число до одного знака после запятой, мы умножаем его на 10, применяем Math.round()
, а затем делим на 10.
Вот ваш код с пояснениями:
var num = 34.7654;
// Умножаем на 10, округляем, затем делим на 10
num = Math.round(num * 10) / 10;
console.log(num); // Выводит: 34.8
Таким образом, результатом будет 34.8
.
Как округлить до 2 знаков после запятой, если необходимо
Где найти документацию по форматированию даты в JavaScript?
В чем разница между String.slice и String.substring?
Проверка соответствия строки регулярному выражению в JS
Как создать диалог с кнопками "Ок" и "Отмена"