Інтернет Windows Android

Методи округлення чисел в JavaScript. Javascript - сторону - typescript округлення Округлення вгору до найближчого цілого числа

У цій статті докладно розглянемо числа, математичні оператори, способи перетворення числа в рядок і навпаки, а також багато інших важливих моментів.

функція isFinite

Функція isFinite дозволяє перевірити, чи є аргумент кінцевим числом.

Як відповідь дана функція повертає false, якщо аргумент є Infinity, -Infinity, NaN або буде бути приведений до одного з цих спеціальних числових значень. В іншому випадку ця функція поверне значення true.

IsFinite (73); // true isFinite (-1/0); // false isFinite (Infinity); // false isFinite (NaN); // false isFinite ( "Текст"); // false

Крім глобальної функції isFinite в JavaScript є ще метод Number.isFinite. Він на відміну від isFinite не провадить примусове приведення аргументу до числа.

IsFinite ( "73"); // true Number.isFinite ( "73"); // false

функція isNaN

Функція isNaN призначена для визначення того, чи є аргумент числом або чи може бути перетворений до нього. Якщо це так, то функція isNaN повертає false. В іншому випадку вона повертає true.

IsNaN (NaN); // true isNaN ( "25px"); // true, тому що 20px - це не число isNaN (25.5); // false isNaN ( "25.5"); // false isNaN ( ""); // false, тому що пробіл або неcколько прогалин перетвориться до 0 isNaN (null); // false, тому що значення null перетвориться до 0 isNaN (true); // false, тому що значення true перетвориться до 1 isNaN (false); // false, тому що значення false перетвориться до 0

Якщо ця дія потрібно виконати без приведення типу, то використовуйте метод Number.isNaN. Даний метод був введений в мову, починаючи з ECMAScript 6.

Як явно перетворити рядок в число?

Явно привести рядок в число можна за допомогою наступних способів:

1. Використовувати унарний оператор +, Який необхідно помістити перед значенням.

+ "7.35"; // 7.35 + "текст"; // NaN

Цей спосіб нехтує пробілами на початку і кінці рядка, а також \ n (перекладом рядка).

+ "7.35"; //7.35 + "7.35 \ n"; //7.35

Використовуючи даний спосіб необхідно звернути увагу на те, що порожній рядок або рядок, що складається з прогалин і \ n, перекладається в число 0. Крім цього вона також перетворює тип даних null і логічні значення до числа.

Null; // 0 + true; // 1 + false; // 0 + ""; // 0

2. Функція parseInt. Ця функція призначена для перетворення аргументу в ціле число. На відміну від використання унарна оператора +, Даний метод дозволяє перетворити рядок в число, в якій не всі символи є цифровими. Починає вона перетворювати рядок, починаючи з першого символу. І як тільки вона зустрічає символ, який не є цифровим, дана функція зупиняє свою роботу і повертає отримане число.

ParseInt ( "18px"); // 18 parseInt ( "33.3%"); // 33

Ця функція може працювати з різними системами числення (двійковій, вісімковій, десятковій, шістнадцятковій). Вказівка ​​підставу системи числення здійснюється за допомогою 2 аргументу.

ParseInt ( "18px", 10); // 18 parseInt ( "33.3%", 10); // 33 parseInt ( "101", 2); // 5 parseInt ( "B5", 16); // 181

Крім функції parseInt в JavaScript є метод Number.parseInt. Даний метод нічим не відрізняється від функції parseInt і був введений в JavaScript зі специфікацією ECMASCRIPT 2015 (6).

3. Функція parseFloat. Функція parseFloat аналогічна parseInt, за винятком того що дозволяє виконати перетворення аргументу в дробове число.

ParseFloat ( "33.3%"); //33.3

Крім цього функція parseFloat на відміну від parseInt не має 2 аргументу, і отже вона завжди намагається розглянути рядок як число в десятковій системі числення.

ParseFloat ( "3.14"); parseFloat ( "314e-2"); parseFloat ( "0.0314E + 2");

Крім функції parseFloat в JavaScript є метод Number.parseFloat. Даний метод нічим не відрізняється від функції parseFloat і був введений в JavaScript зі специфікацією ECMASCRIPT 2015 (6).

Перетворення числа в рядок

Перетворити число в рядок можна за допомогою методу toString.

(12.8) .toString (); //"12.8 "

Метод toString дозволяє також вказати підставу системи числення з урахуванням якої необхідно явно привести число до рядка:

(255) .toString (16); // "ff"

Як перевірити чи є змінна числом

Визначити чи є значення змінної числом можна використовуючи один з таких способів:

1. З використанням функцій isNaN і isFinite:

// myVar - змінна if (! IsNaN (parseFloat (myVar)) && isFinite (parseFloat (myVar))) (// myVar - це число або може бути приведено до нього);

У вигляді функції:

// функція function isNumeric (value) (return! IsNaN (parseFloat (value)) && isFinite (parseFloat (value));) // використання var myVar = "12px"; console.log (isNumeric (myVar)); // true

Цей спосіб дозволяє визначити чи є вказане значення числом або може бути приведено до нього. Даний варіант не вважає числом порожній рядок, рядок з прогалин, значення null, Infinity, -Infinity, true і false.

2. З використанням оператора typeof і функцій isFinite, isNaN:

// функція яка перевіряє чи є значення числом function isNumber (value) (return typeof value === "(! LANG: number" && isFinite(value) && !isNaN(value); }; // использование функции isNumber isNumber(18); //true // использование функций для проверки текстовых значений isNumber(parseFloat("")); //false isNumber(parseFloat("Infinity")); //false isNumber(parseFloat("12px")); //true !}

Ця функція визначає чи має вказане значення тип Number, а також чи не належить воно до одного зі спеціальних значень Infinity, -Infinity і NaN. Еслі це так, то дана функція повертає значення true.

3. За допомогою методу ECMAScript 6 Number.isInteger (value). Даний метод дозволяє визначити, чи є вказане значення цілим числом.

Number.isInteger ( "20"); // false, тому що даний метод не виконує переклад рядка в число Number.isInteger (20); // true, тому що дане значення є числом

Парні і непарні числа

Перевірити чи є число парних або непарних можна за допомогою наступних функцій:

// Функція для перевірки числа на парність function isEven (n) (return n% 2 == 0;) // Функція для перевірки числа на непарність function isOdd (n) (return Math.abs (n% 2) == 1; )

Але перед тим як проводити таку перевірку бажано переконатися що вказане значення є числом:

Value = 20; if (Number.isInteger (value)) (if (isEven (value)) (console.log ( "Число" + value.toString () + "- парне");))

Прості числа в Javascript

Розглянемо приклад в якому виведемо за допомогою Javascript прості числа від 2 до 100.

// Функція, яка перевіряє чи є число простим function isPrime (value) (if (isNaN (value) ||! IsFinite (value) || value% 1 || value< 2) return false; var max=Math.floor(Math.sqrt(value)); for (var i = 2; i< = max; i++) { if (value%i==0) { return false; } } return true; } // создать массив, который будет содержать простые числа от 2 до 100 var primaryNumber = ; for (var i = 2; i <= 100; i++) { if(isPrime(i)) primaryNumber.push(i); } // вывести в консоль простые числа от 2 до 100 console.log(primaryNumber);

Округлення числа в Javascript

Округлити дробове число до цілого значення в JavaScript можна різними способами.

1. Використовуючи спеціально призначені для цього методи Math.floor, Math.ceil і Math.round. Метод Math.floor округлює дробове число до найближчого цілого вниз, тобто попросту відкидає дробову частину. Math.ceil округляють дробове число до найближчого цілого вгору. Math.round округлює число вгору або вниз в залежності від значення дробової частини. Якщо дрібна частина більше або дорівнює 0.5, то вгору, інакше скруленіе здійснюється вниз.

Console.log (Math.floor (7.9)); // 7 console.log (Math.ceil (7.2)); // 8 console.log (Math.round (7.5)); // 8

2. За допомогою методу toFixed (точність). Даний метод округлює дробову частину числа до заданої точності. Результат округлення повертає у вигляді рядка.

Console.log (7.987.toFixed (2)); //"7.99 "

Якщо знаків після коми для формування зазначеної точності числа не вистачає, то воно доповнюється нулями.

Console.log (7.987.toFixed (5)); //"7.98700 "

3. За допомогою методу toPrecision (точність). Даний метод являє число з вказаною точністю. При цьому він може округлити не тільки дробову, а й цілу частину числа. Отримане число даний метод може уявити в залежності від результату з фіксованою комою або в експоненційної формі.

Console.log ((1001) .toPrecision (2)); //"1.0e+3 "console.log ((1001) .toPrecision (5)); //"1001.0 "console.log ((12.4) .toPrecision (1)); // "1e + 1" console.log ((12.4) .toPrecision (2)); // "12" console.log ((12.4) .toPrecision (3)); //"12.4 "console.log ((12.4) .toPrecision (5)); //"12.400 "

4. Використовуючи логічні оператори НЕ або АБО.

// за допомогою подвійного логічного заперечення console.log (~~ 7.9); // 7 // за допомогою використання логічного АБО з нулем: console.log (7.9 ^ 0); // 7

Ціла і дробова частина числа

Отримати цілу частину числа можна використовуючи метод Math.floor () і parseInt ():

Console.log (Math.floor (7.21)); // 7 console.log (parseInt (7.21)); // 7

Отримати дробову частину числа можна скористався оператором відсоток (%). Даний оператор повертає залишок, який буде отриманий від ділення першого числа на друге. В даному випадку в якості 2 числа необхідно використовувати 1.

Console.log (7.21% 1); // 0.20999999999999996 // з точністю до 2 знаків після коми console.log ((7.21% 1) .toFixed (2)); // "0.21"

Крім цього дробову частину можна отримати також за допомогою обчислень:

Var number = 7.21; var fractionNumber = number - Math.floor (Math.abs (number)); console.log (fractionNumber); // 0.20999999999999996

Чи ділиться число без остачі

Визначити чи ділиться число без остачі можна використовуючи оператор відсотка:

Var number = 9; // якщо залишок від ділення числа number на 3 дорівнює 0, то так, інакше немає if (number% 3 == 0) (console.log ( "Число" + number + "ділиться на 3");) else (console. log ( "Число" + number + "не ділиться на 3");)

форматування чисел

В JavaScript відформатувати висновок числа відповідно до регіональними стандартами (мовними налаштуваннями операційної системи) дозволяє метод toLocaleString ().

Наприклад, виконаємо форматування числа відповідно до регіональних стандартів, які встановлені в системі за замовчуванням:

Var number = 345.46; console.log (number.toLocaleString ()); // "345,46"

Наприклад, виконаємо форматування числа відповідно до регіональними стандартами Росії (ru):

Console.log ((108.1) .toLocaleString ( "ru-RU")); // "108,1"

Даний метод можна також використовувати для форматування числа у вигляді валюти:

Console.log ((2540.125) .toLocaleString ( "ru-RU", (style: "currency", currency: "RUB"))); // "2 540,13 ₽" console.log ((89.3) .toLocaleString ( "ru-RU", (style: "currency", currency: "USD"))); // "89,30 $" console.log ((2301.99) .toLocaleString ( "ru-RU", (style: "currency", currency: "EUR"))); // "2 301,99 €"

Подання числа у вигляді відсотків:

Console.log ((0.45) .toLocaleString ( "ru-RU", (style: "percent"))); // "45%"

Розбити число на розряди (властивість useGrouping):

Console.log ((125452.32) .toLocaleString ( "ru-RU", (useGrouping: true))); // "125 452,32"

Вивести з число з певною кількістю цифр (2) після коми:

Console.log ((1240.4564) .toLocaleString ( "ru-RU", (minimumFractionDigits: 2, maximumFractionDigits: 2))); // "1 240,46"

порівняння чисел

Для порівняння чисел в JavaScript використовуються наступні оператори: == (дорівнює),! = (Не дорівнює),> (більше),< (меньше), >= (Більше або дорівнює),<= (меньше или равно).

Наприклад, порівняємо два числа:

Console.log (2> 3); // false console.log (5> = 3); // true

При порівнянні чисел з дробовою частиною необхідно враховувати похибки, які можуть виникати під час цих обчислень.

Наприклад, в JavaScript сума чисел (0.2 + 0.4) не дорівнює 0.6:

Console.log ((0.2 + 0.4) == 0.6); // false

Похибки відбуваються тому що всі обчислення комп'ютер або інший електронний пристрій виробляє в 2 системі числення. Тобто перед тим як виконати якісь дії комп'ютер спочатку повинен перетворити представлені в вираженні числа в 2 систему числення. Але, не будь-яке дробове десяткове число можна представити в 2 системі числення точно.

Наприклад, число 0.25 10 в двійкову систему перетворюється точно.

0.125 × 2 = 0.25 | 0 0.25 × 2 = 0.5 | 0 0.5 × 2 = 1 | 1 0.125 10 = 0.001 2

Наприклад, число 0.2 10 можна перетворити в 2 систему тільки з певною точністю:

0.2 × 2 = 0.4 | 0 0.4 × 2 = 0.8 | 0 0.8 × 2 = 1.6 | 1 0.6 × 2 = 1.2 | 1 0.2 × 2 = 0.4 | 0 0.4 × 2 = 0.8 | 0 0.8 × 2 = 1.6 | 1 0.6 × 2 = 1.2 | 1 0.2 × 2 = 0.4 | 0 0.4 × 2 = 0.8 | 0 0.8 × 2 = 1.6 | 1 0.6 × 2 = 1.2 | 1 ... 0.2 10 = 0.001100110011 ... 2

В результаті ці похибки позначаться при обчислення суми двох чисел і результати порівняння. Тобто вийде що насправді JavaScript буде бачити цей запис в такий спосіб:

0.6000000000000001==0.6

При обчисленнях або відображенні чисел з дробовою частиною необхідно завжди вказувати точність, з якою це необхідно робити.

Наприклад, порівняти числа до 2 знаків після коми використовуючи методи toFixed () і toPrecision ():

// метод toFixed () console.log ((0.2 + 0.4) .toFixed (2) == (0.6) .toFixed (2)); // true // метод toPrecision () console.log ((0.2 + 0.4) .toPrecision (2) == (0.6) .toPrecision (2)); // true

Основні математичні операції

В JavaScript існують такі математичні оператори: + (додавання), - (віднімання), * (множення), / (ділення),% (залишок від ділення), ++ (повів значення на 1), - (зменшити значення на 1 ).

6 + 3 // 9 6-3 // 3 6 * 3 // 18 6/3 // 2 6% 3 // 0, тобто 6: 3 = 2 => 6-3 * 2 => ост (0) 5% 2 // 1, тобто 5: 2 = 2 (.5) => 5-2 * 2 => ост (1) 7.3% 2 //1.3, тобто 7.3: 2 = 3 (.65) => 7.3-2 * 3 => ост (1.3) // знак результату операції% дорівнює знаку першого значення -9% 2.5 //-1.5, тобто 9: 2.5 = 3 (.6) => 9-2.5 * 3 => ост (1.5) -9% -2.5 //-1.5, тобто 9: 2.5 = 3 (.6) => 9-2.5 * 3 => ост (1.5) -2% 5 // - 2, тобто 2: 5 = 0 (.4) => 2-5 * 0 => ост (2) x = 3; console.log (x ++); // виводить 3, у вже потім встановлює 4 console.log (x); // 4 x = 3; console.log (++ x); // встановлює 4 і виводить x = 5; console.log (x--); // виводить 5, у вже потім встановлює 4 console.log (x); // 4 x = 5; console.log (- x); // встановлює 4 і виводить Крім цього в JavaScript є комбіновані оператори: x + = y (x = x + y), x- = y (x = xy), x * = y (x = x * y), x / = y (x = x / y), x% = y (x = x% y). x = 3; y = 6; x + = y; console.log (x); // 9 x = 3; y = 6; x- = y; console.log (x); // - 3 x = 3; y = 6; x * = y; console.log (x); // 18 x = 3; y = 6; x / = y; console.log (x); //0.5 x = 3; y = 6; x% = y; console.log (x); // 3

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

Для чого округляти числа?

JavaScript не зберігає цілі числа, оскільки їх значення представлені у вигляді цифр з плаваючою точкою. Багато дробу не можуть бути представлені числом з визначеним кінцевим кількістю знаків після коми, тому JavaScript може генерувати результати, на зразок наведеного нижче:

0.1 * 0.2; > 0.020000000000000004

На практиці це не матиме ніякого значення, оскільки мова йде про похибки в 2 квінтіліонние. Але це може відбитися на результаті при роботі з числами, які представляють значення валют, відсотків або розмір файлу. Тому потрібно зробити або до певного знака після коми.

Округлення десяткових чисел

Щоб «обрізати» десяткове число, використовуються методи toFixed () або toPrecision (). Вони обидва приймають один аргумент, який визначає кількість значущих і знаків після коми, які повинні бути включені в результат:

  • якщо для toFixed () аргумент не визначений, значення за замовчуванням дорівнює 0, тобто без знаків після коми; максимальне значення аргументу дорівнює 20;
  • якщо для toPrecision () аргумент не заданий, число не змінюється.

var randNum = 6.25; randNum.toFixed (); > "6" Math.PI.toPrecision (1); > "3" var randNum = 87.335; randNum.toFixed (2); > "87.33" var randNum = 87.337; randNum.toPrecision (3); > "87.3"

Примітка

І toFixed (), і toPrecision повертають округлене рядкове представлення результату, а не число. Це означає, що додаток rounded до randNum в результаті дасть конкатенацію рядків, а не одне число:

console.log (randNum + rounded); > "6.256"

Якщо потрібно отримати в результаті JavaScript округлення до сотих число, використовуйте parseFloat ():

var randNum = 6.25; var rounded = parseFloat (randNum.toFixed (1)); console.log (rounded); > 6.3

toFixed () і toPrecision () також є корисними методами для усічення великої кількості знаків після коми. Це зручно при роботі з числами, що представляють грошові одиниці:

var wholeNum = 1 var dollarsCents = wholeNum.toFixed (2); console.log (dollarsCents); > "1.00"

Зверніть увагу, що якщо в числі більше знаків, ніж задано параметром точності, toPrecision видаватиме результат в науковому форматі:

var num = 123.435 num.toPrecision (2); > "1.2e + 2"

Як уникнути помилок при округленні десяткових дробів

У деяких випадках toFixed і toPrecision здійснюють JavaScript округлення 5 в меншу сторону, А не до більшого:

var numTest = 1.005; numTest.toFixed (2); > 1;

Результатом наведеного вище прикладу має бути 1.01, а не 1. Якщо потрібно уникнути цієї помилки, я рекомендую використовувати експоненціальні числа:

function round (value, decimals) (return Number (Math.round (value + "e" + decimals) + "e -" + decimals);)

застосування:

round (1.005,2); > 1.01

Якщо потрібно ще надійніше рішення, ніж округлення, воно є на MDN.

Округлення за допомогою Епсілон

альтернативний метод JavaScript округлення до десятихбув введений в ES6 ( також відомому, як JavaScript 2015). « машинний епсилон»Забезпечує розумну межу похибки при порівнянні двох чисел з плаваючою комою. Без округлення, порівняння можуть дати результати, подібні наступним:

0.1 + 0.2 === 0.3> false

Math.EPSILON може бути використаний в функції для отримання коректного порівняння:

function epsEqu (x, y) (return Math.abs (x - y)< Number.EPSILON * Math.max(Math.abs(x), Math.abs(y)); }

Функція приймає два аргументи: Один містить обчислення, другий очікуваний (округлений) результат. Вона повертає порівняння цих двох параметрів:

epsEqu (0.1 + 0.2, 0.3)> true

Всі сучасні браузери підтримують математичні функції ES6. Але якщо необхідно забезпечити підтримку в старих браузерах, то потрібно використовувати поліфілли.

Усічення десяткових чисел

Всі методи, представлені раніше, виконують JavaScript округлення до десятих. Щоб відсікти позитивне число до двох знаків після коми, помножити його на 100, усікти знову, а потім отриманий результат розділити на 100, потрібно:

function truncated (num) (return Math.trunc (num * 100) / 100;) truncated (3.1416)> 3.14

Якщо потрібно щось більш гнучке, можна скористатися побітовим оператором:

function truncated (num, decimalPlaces) (var numPowerConverter = Math.pow (10, decimalPlaces); return ~~ (num * numPowerConverter) / numPowerConverter;)

Використання:

var randInt = 35.874993; truncated (randInt, 3); > 35.874

Округлення до найближчого числа

щоб здійснити JavaScript округлення до цілого, Використовується Math.round ():

Math.round (4.3)> 4 Math.round (4.5)> 5

Зверніть увагу, що " половинні значення«, Такі як .5, округлюються вгору.

Округлення вниз до найближчого цілого числа

Якщо ви хочете округляти в меншу сторону, використовуйте метод Math.floor ():

Math.floor (42.23); > 42 Math.floor (36.93); > 36

Округлення «вниз» має один напрямок для всіх чисел, в тому числі і для негативних. Це можна уявити, як хмарочос з безліччю поверхів, в тому числі і нижче рівня фундаменту ( представляють негативні числа). Якщо ви перебуваєте в ліфті між підвальними поверхами 2 і 3 ( що відповідає значенню -2.5), Math.floor доставить вас на поверх -3:

Math.floor (-2.5); > -3

Якщо ви хочете уникнути цього, використовуйте JavaScript Math округлення за допомогою Math.trunc (), підтримуваний у всіх сучасних браузерах (крім IE / Edge):

Math.trunc (-41.43); > -41

MDN також надає поліфілл з трьох рядків для забезпечення підтримки Math.trunc в старих браузерах і IE / Edge.

Округлення вгору до найближчого цілого числа

Якщо ви хочете округлити десяткові числа вгору, використовуйте Math.ceil. Дія цього методу також можна уявити, як нескінченний ліфт: Math.ceil завжди щастить вас «вгору«, незалежно від того, чи є число негативним або позитивним:

Math.ceil (42.23); > 43 Math.ceil (36.93); > 37 Math.ceil (-36.93); -36

Округлення до найближчого кратного числа

Якщо потрібно округлити значення до найближчого числа, кратного 5, створіть функцію, яка ділить число на 5, округлює його, а потім множить результат на те ж значення:

function roundTo5 (num) (return Math.round (num / 5) * 5;)

Використання:

roundTo5 (11); > 10

Якщо потрібно виконати JavaScript округлення до двох знаків, можна передавати функції, як початкове число, так і кратність:

function roundToMultiple (num, multiple) (return Math.round (num / multiple) * multiple;)

Щоб використовувати функцію, включіть в її виклик округляти число і кратність:

var initialNumber = 11; var multiple = 10; roundToMultiple (initialNumber, multiple); > 10;

Щоб округляти значення тільки в більшу або меншу сторону замініть в функції round на ceil або floor.

Прив'язка до діапазону

Іноді потрібно отримати значення х, яке повинно знаходитися в межах певного діапазону. Наприклад, потрібно значення від 1 до 100, але ми отримуємо значення 123. Щоб виправити це, можна використовувати min () ( повертає найменше із чисел) І max ( повертає максимально допустиму кількість).

Використання:

var lowBound = 1; var highBound = 100; var numInput = 123; var clamped = Math.max (lowBound, Math.min (numInput, highBound)); console.log (clamped); > 100;

Можна створити функцію або розширення класу Number.

Вітання. Сьогодні в колонці про Javascript ми розглянемо як задати на javascript кількість знаків після коми в числах з плаваючою комою. Наприклад потрібно залишити 3 знаки після коми при виведенні, або тільки два.

Завдання: javascript кількість знаків після коми

Отже, перед нами стоїть завдання: є результат обчислень, в якому є цифри перед коми, і після коми. Десятковий дріб. Припустимо результат вийшов ось такий 1538.9891200153. Але при виведенні маємо отримати число, що відображає суму, де до коми кількість банкнот, а після - копійок.

Є кілька способів вирішення це завдання.

Рішення 1: javascript кількість знаків після коми за допомогою методу toFixed

toFixed - це вбудований в javascript метод, який застосовується до будь-якого числа, як параметр приймає точність округлення (тобто кількість знаків після коми).

Var num = 1538.9891200153; num_str = num.toFixed (); // num_str = 1538; num_str = num.toFixed (2); //num_str=1538.98; num_str = num.toFixed (5); //num_str=1538.98912;

Параметр точності в цій функції повинен бути не менше 0 (не приймає негативні значення), і не більше 20.

Також можна обійтися без змінної, наприклад ось так:

Num_str = (1538.9891200153) .toFixed (2); //num_str=1538.98;

Рішення 2: javascript кількість знаків після коми за допомогою методу toPrecision

Це рішення базується на такому ж вбудованому методі javascript. Відмінною особливістю цього методу є те, що параметр, який приймає на вхід позначає не точність (кількість знаків після коми), а загальна кількість знаків (як до коми, так і після неї).

Var num = 1538.9891200153; num_str = num.toPrecision (5); //num_str=1538.9; num_str = num.toPrecision (7); //num_str=1538.989;

Рішення без знаків після коми: javascript кількість знаків після коми

Якщо ж знаки після коми потрібно повністю відкинути, тобто потрібно округлити дробове число до цілого, то можна використовувати функції класу Math: round, ceil і floor.
Round - округлює в більшу або меншу сторону (залежно від числа). Якщо значення після коми більше половини, то округлити в більшу сторону, якщо менше - в меншу. Тобто якщо 0.51 - стане 1, якщо 0.49 - 0.

Ceil - від англ. стелю округлює завжди в більшу сторону.

Floor - від англ. пол округлює завжди в меншу сторону.

Var num = 1538.9891200153; num_str = Math.round (num); // num_str = 1539; num_str = Math.floor (num); // num_str = 1538; num_str = Math.ceil (num); // num_str = 1539;

На цьому все. Сподіваюся ця замітка допомогла вам вирішити поставлену задачу. Якщо щось не вийшло - задавайте питання за допомогою зеленої кнопки «Задати запитання спеціалісту», або в коментарях.

Привіт, любителі JavaScript-а. Ви вже помітили, що ця мова дуже неординарний і в кожному розділі виділяється своїми особливостями і незвичайними технічними рішеннями. Тому сьогоднішня публікація присвячується темі: «JavaScript округлення».

Після прочитання поточної статті ви дізнаєтеся, для чого необхідно округляти числа, які методи і властивості в js виконують цю функцію, а також ніж виділяється поділ на 0. Не зраджуючи своїм принципам, я прикріплений приклади до ключових моментів матеріалу і докладно розпишу кожна дія. А тепер давайте приступати до навчання!

Важливі замітки про числах

Для початку запам'ятайте, що в js всі види чисел (дробові і цілі) відносяться до типу Number. До того ж всі вони 64-бітові, так як зберігаються в форматі «double precision», який також відомий під стандартом IEEE-754.

Створюються чисельні змінні звичним способом:

var numb = 35; // натуральне число

var drob = 0.93; // десяткове подання

var numb16 = 0xFF; // 16-річної системі числення

Підтримує і інші числові уявлення. Так, ще можна створювати числа з плаваючою точкою (їх ще іноді називають «числа в науковому форматі»).

В з'явилася підтримка дуже цікавого методу toLocaleString (), Який форматує всі числові параметри по специфікаціям, прописаним в ECMA 402. Завдяки цьому великі числа, телефонні номери, валюти і навіть відсотки красиво виводяться в діалоговому вікні.

var num = 714000.80;

alert (num.toLocaleString ());

Для роботи з елементами типу Number був передбачений цілий глобальний об'єкт з купою всіляких математичних функцій, ім'я якого Math.

Крім цього, існують і інші методи, які виконують округлення числових значень до цілих чисел, до десятих, сотих і т.д. Розглянемо їх все докладніше.

Великий і могутній Math

Глобальний об'єкт Math включає в себе величезну кількість різноманітних математичних і тригонометричних функцій. Це дуже потрібний об'єкт і часто виручає розробників при роботі з цифровими даними.

На інших платформах існують аналогії Math. Наприклад, в таких популярних мовах, як Java і C #, Math є клас, який підтримує всі ті ж стандартні функції. Так що як бачите цей інструмент дійсно великий і могутній.

Тепер я хочу пройтися по конкретним методам, які відповідають за округлення, і докладно про них розповісти.

Math.floor ()

почну з Math.floor. Зверніть увагу на найменування методу. Логічно стає зрозуміло, що раз мова йде про округлення, а дослівний переклад слова «floor» означає «стать», то даний інструмент округлити оброблювані значення в меншу сторону.

Також можливий варіант, коли оброблене число за допомогою цієї функції не змінився. Все тому, що округлення здійснюється по нестрогому нерівності (<=). Таким образом, при отработке этой строчки кода:

alert (Math.floor (4.5));

у відповіді буде число 4.

Math.ceil ()

Знову-таки подивіться на назву (в такий спосіб матеріал швидше засвоюється). Якщо хтось не знає, то «ceil» означає «стелю». Значить округлення числових даних буде здійснюватися в більшу сторону, використовуючи Нечитка нерівність (> =).

alert (Math.ceil (4.5));

Як ви вже здогадалися, у відповіді буде число 5.

Math.round ()

Даний метод округлює дробове число до найближчого цілого. Так, якщо дрібна частина знаходиться в діапазоні від 0 і до 0.5 НЕ включно, то округлення відбувається до меншого значення. А якщо дрібна частина знаходиться в діапазоні від включно 0.5 і до наступного цілого числа, то вона округлюється до більшого цілого.

alert (Math.round (4.5));

Сподіваюся, все подумали або сказали правильну відповідь - 5.

Ще трохи методів

В JavaScript також є і інші 2 методу, які займаються округленням числових уявлень. Однак вони дещо відрізняються.

Йтиметься про таких інструментах, як toFixed ()і toPrecision (). Вони відповідають не просто за округлення, а за її точність до певних знаків. Давайте покопаємо глибше.

toFixed ()

За допомогою даного механізму можна вказувати, до скількох знаків після коми потрібно округлити значення. Метод повертає результат у вигляді рядка. Нижче я прикріпив варіант з трьома різними варіантами. Проаналізуйте отримані відповіді.

var num = 5656.9393;

document.writeln (num.toFixed ()); // 5657

document.writeln (num.toFixed (2)); // 5656.94

document.writeln (num.toFixed (7)); // 5656.9393000

Як видно, якщо не вказати аргументу, то toFixed ()) округлити дробове значення до цілогочисла. У третьому рядку виконано округлення до 2-знаків,а в четвертій - через параметра «7» було дописано ще три 0.

toPrecision ()

Даний метод діє трохи інакше. На місці аргументу можна залишити як пусте місце, так і встановити параметр. Однак останній буде округляти числа до зазначеної кількості цифр, не звертаючи уваги на кому. Ось які результати видала програма, переписана з минулого прикладу:

var num = 5656.9393;

document.writeln (num.toPrecision ()); // 5656.9393

document.writeln (num.toPrecision (2)); // 5.7e + 3

document.writeln (num.toPrecision (7)); // 5656.939

Особливість розподілу на 0 в js

Як відомо з уроків з математики, ділити на нуль не можна. Це правило взяли за основу більшість творців мов програмування. Тому при розподілі на нуль всі програми видають помилку.

Однак JavaScript відзначився і тут. Так, під час виконання такої операції ніяких повідомлень про баг не виникає ... тому що така операція повертає «Infinity»!

Чому ж так? Як відомо з тих же математичних наук, чим менше дільник, тим в результаті виходить більше число. Саме тому творці даного прототипна-орієнтованої мови вирішили відмовитися від шаблонів і піти своїм шляхом.

Для тих, хто вперше стикається зі значенням Infinity, нижче я пояснив його особливості.

Infinity - означає нескінченність і повністю відповідає математичному знаку ∞.

Може бути негативною. Також зберігаються всі стандартні правила роботи з арифметичними операторами.

alert (12/0); // Infinity

alert (12.34 / 0); // Infinity

alert (-3 / 0); // -Infinity

На цьому, мабуть, і закінчу. Якщо вам сподобалася публікація, то обов'язково підписуйтесь на мій блог. Чи не скупіться посиланням на цікаві статті та діліться ними з друзями. Бувай!