RealAdmin

Округление чисел в JS

Округление чисел в JS
Комментарии: 0

В JavaScript есть несколько методов для округления чисел до нужного формата. Они отличаются принципом работы и имеют ряд особенностей, которые рассмотрим на примерах.

Math — встроенный в JS объект, который содержит свойства и методы с математическим уклоном.

Math.round

Math.round(x) — округляет число до ближайшего целого по математическому принципу. Если первая цифра после запятой равна или больше 5, то к положительному целому числу прибавляется единица.

    Math.round(10.49); // 10
    Math.round(10.5); // 11
    Math.round(10.51); // 11

К отрицательному идёт прибавка только если цифра строго больше 5:

    Math.round(-10.49); // -10
    Math.round(-10.5); // -10
    Math.round(-10.51); // -11

Math.floor

Math.floor(x) — округление до наименьшего целого. Для положительных чисел всё что после запятой не учитывается и отбрасывается.

    Math.floor(10.49); // 10
    Math.floor(10.5); // 10
    Math.floor(10.51); // 10

Для отрицательных логика та же, но целое число изменяется в меньшую сторону:

    Math.floor(-10.49); // -11
    Math.floor(-10.5); // -11
    Math.floor(-10.51); // -11

Math.ceil

Math.ceil(x) — это противоположность «Math.floor», то есть преобразование происходит в большую сторону.

    Math.ceil(10.49); // 11
    Math.ceil(10.5); // 11
    Math.ceil(10.51); // 11

Здесь без комментариев:

    Math.ceil(-10.49); // 10
    Math.ceil(-10.5); // 10
    Math.ceil(-10.51); // 10

Math.trunc

Math.trunc(x) — предельно простая функция — для любых чисел отбрасывает всё после запятой.

    Math.trunc(10.49); // 10
    Math.trunc(10.5); // 10
    Math.trunc(10.51); // 10

Тоже самое для отрицательных:

    Math.trunc(-10.49); // 10
    Math.trunc(-10.5); // 10
    Math.trunc(-10.51); // 10

Не поддерживается браузером «Internet Explorer».

Округление до нужного знака

Рассмотрим способы округления до определенного знака после запятой. Для этих целей может применяться любая предыдущая функция. Округлим «Pi» до 2 знаков после запятой.

    Math.round(3.14159265359 * Math.pow(10, 2)) / Math.pow(10, 2); // 3.14
    Math.floor(3.14159265359 * Math.pow(10, 2)) / Math.pow(10, 2); // 3.14
    Math.ceil(3.14159265359 * Math.pow(10, 2)) / Math.pow(10, 2); // 3.15
    Math.trunc(3.14159265359 * Math.pow(10, 2)) / Math.pow(10, 2); // 3.14

Math.pow(10, 2) — возводит первый аргумент в степень (второй аргумент).

    Math.round(3.14159265359 * 1000) / 1000; // 3.142
    Math.round(3.14159265359 * Math.pow(10, 3)) / Math.pow(10, 3); // 3.142

Number.toFixed

Этот метод из прототипа объекта «Number» похож на «Math.round», но с рядом отличий:

  • результат приводится к типу «String»;
  • если передаваемый аргумент больше количества знаков после запятой, то метод добавит к результату нули.

Примеры:

    3.14159265359.toFixed(2); // "3.14"
    3.14159265359.toFixed(3); // "3.142"
    let num = 3.14159265359; num.toFixed(3); // "3.142"
    -3.14159265359.toFixed(3); // "-3.142"
    
    3.14.toFixed(4); // "3.1400"
    let num = 3; num.toFixed(3); // "3.000"

Для приведения результата к типу «Number» используйте функцию «parseFloat».

    parseFloat(3.14159265359.toFixed(3)); // 3.142
Темы:
Ещё интересное — 6
Комментарии —
    © REALADMIN.RU   2021 г.
    Страница сгенерирована: 0,1683 s | 4 mb.
    На каком уровне Вы играете в шахматы?
    О П Р О С