- Как поделить число нацело в javascript?
- JavaScript. Остаток от деления и деление без остатка
- Остаток от деления (деление по модулю)
- Деление без остатка
- Задача. Функция для определения простого числа
- Ваши вопросы и комментарии:
- Свежие записи
- Целочисленное деление в JavaScript
- Получите частное и остаток от целочисленного деления с помощью библиотеки Math в JavaScript
- Получите частное и остаток от целочисленного деления с помощью побитовых операторов в JavaScript
- Division (/)
- Try it
- Syntax
- Description
- Examples
- Basic division
- Division by zero
- Specifications
- Browser compatibility
- See also
- Found a content problem with this page?
- MDN
- Support
- Our communities
- Developers
Как поделить число нацело в javascript?
И вот такой, но с ним лучше быть осторожнее — работает лишь для небольших чисел (где-то до 4e9):
Всё зависит от того, как вы хотите округлить результат деления.
Math.floor(a/b); Math.floor(3/2); // = 1
Math.ceil(a/b); Math.ceil(3/2); // = 2;
Поделить на число без остатка в JS можно несколькоми способами.
Способ 1. Округление:
var x = 10, y = 3.3333; alert(Math.floor(x/y));
Этот способ расчитан на результат вычисления больше нуля. Если результат будет отрицательный, то такая конструкция сработает не правильно.
Math.floor(-100/3); // Выдаст -34, хотя целая часть от -33,33333336 будет равна -33
Как вариант, для решения этой задачи округлением можно использовать опертор if:
if(x/y>=0) alert(Math.floor(x/y)); else alert(Math.ceil(x/y));
Способ 2 : Вероятно не такой быстрый как предыдущий, но более универсальный. Приведение к int:
var x = 10, y = 3.3333; alert(parseInt(x/y));
Способ 3. Производительный и универсальный:
var x = 10, y = 3.3333; function div(val, by) < return (val - val % by) / by; >alert(div(x, y));
Ну и немного хадкора:
alert(~~(x/y)) // сокращенный Math.floor() результаты будут такие же alert(x/y>>0) alert(x/y|0)
В javascript отсутствует деление на целые числа и числа с плавающей запятой.
Возможно, как следствие, отсутствуют и специальные арифметические операторы для целый чисел.
Исходя из этого есть несколько вариантов решения:
- Выполнение обычного деления и взятие от результата целой части. Для этой процедуры есть функции Math.floor и Math.ceil, разница заключается в том, большее целое или меньшее будет выбрано.
console.log(Math.floor(10 / 3)); console.log(Math.floor(-10 / 3)); console.log(Math.ceil(10 / 3)); console.log(Math.ceil(-10 / 3));
console.log((10 / 3) | 0); console.log((-10 / 3) | 0); console.log((10 / 3) >> 0); console.log((-10 / 3) >> 0); console.log(' Неожиданно: ', (10000000000 / 2) | 0) console.log(' Неожиданно: ', (10000000000 / 2) >> 0)
Воспользуйтесь функицией Math.trunc(x);
Math.trunc(13.37); // 13 Math.trunc(42.84); // 42 Math.trunc(0.123); // 0 Math.trunc(-0.123); // -0 Math.trunc('-1.123'); // -1
JavaScript. Остаток от деления и деление без остатка
В этом посте мы рассмотрим как получить остаток и целое от деления в JS.
Остаток от деления (деление по модулю)
Чтобы получить остаток от деления мы можем воспользоваться оператором %
console.log(20 % 3) // 2 (3 * 6 = 18)
Как видно из примера, мы получим 2 — это и будет остаток от деления.
Где такое может понадобиться? Как пример, если в цикле вы будете генерировать строки таблицы и каждую 3 строку вам нужно будет стилизовать:
В данном примере показана каждая третья строка, но можно также сделать и с другим числом:
if (i % 2 === 0) — каждая вторая строка
if (i % 5 === 0) — каждая пятая строка
if (i % 10 === 0) — каждая 10я строка и т.д.
Другой пример, когда вам нужно проверить делимость числа например на 10 и 100 без остатка:
if (num % 10 === 0 && num % 100 === 0)
Деление без остатка
Чтобы получить целое число от деления можно использовать несколько вариантов.
Первый вариант, наиболее очевидный, это округление числа после операции деления:
let num1 = 10, num2 = 3; console.log(Math.floor(num1/num2)); // 3 (округление в меньшую сторону) console.log(Math.ceil(num1/num2)); // 4 (округление в большую сторону) console.log(Math.round(num1/num2)); // 3 (математическое округление) console.log(+(num1/num2).toFixed(0)); // 3 (математическое округление) console.log(parseInt((num1/num2))); // 3 (приведение к числу, будет отброшена дробная часть)
Подробнее про разные способы округления чисел (в меньшую и в большую сторону) можете прочитать по ссылке.
Еще один вариант, предложенный пользователем в комментариях:
Также есть другие варианты, с использованием битовых операций:
let num1 = 10, num2 = 3; console.log((num1/num2) | 0); // 3 console.log((num1/num2) >> 0); // 3
Задача. Функция для определения простого числа
Давайте теперь на примере посмотрим, как можно использовать остаток от деления для решения такой задачи. Простое число: это положительное число, которое делиться только на самого себя и на 1.
Итак, напишем функцию, которая на вход принимает какое-то число, дальше в цикле начиная с 2 (т.к. на единицу итак все делиться), пока счетчик меньше передаваемого числа, проверяем будет ли num делиться без остатка. Если делиться, значит num не является простым числом:
function isPrime(num) < for (let i = 2; i < num; i++) < if (num % i === 0) < return false; >> return num > 1; > console.log(isPrime(1)); // false console.log(isPrime(2)); // true console.log(isPrime(3)); // true console.log(isPrime(4)); // false console.log(isPrime(5)); // true
Ваши вопросы и комментарии:
Свежие записи
Копирование материалов разрешено только с ссылкой на источник Web-Dev.guru
2023 © Все права защищены.
Целочисленное деление в JavaScript
- Получите частное и остаток от целочисленного деления с помощью библиотеки Math в JavaScript
- Получите частное и остаток от целочисленного деления с помощью побитовых операторов в JavaScript
В этом руководстве будет обсуждаться, как получить частное и остаток от деления с помощью библиотеки Math и побитовых операторов в JavaScript.
Получите частное и остаток от целочисленного деления с помощью библиотеки Math в JavaScript
В JavaScript мы можем легко разделить две переменные, и результат будет в виде чисел с плавающей запятой, но если мы хотим получить частное и остаток от деления, мы можем использовать библиотеку Math , предоставляющую нам множество функций. . Например, мы можем получить частное от деления с помощью функции Math.floor() или Math.trunc() , которая преобразует число с плавающей запятой в целое число, а чтобы получить остаток, мы можем использовать % персонаж. Например, давайте найдем частное и остаток от 13, разделенного на 5. См. Код ниже.
var a = 13; var b = 5; var quo = Math.floor(a/b); var rem = a%b; console.log('Quotient = ',quo,'Remainder = ',rem);
Обратите внимание, что библиотека Math выйдет из строя, если числа будут слишком большими. Вы также можете использовать функцию Math.trunc() , которая может обрабатывать большие числа по сравнению с функцией Math.floor() . Функция Math.floor() не сработает в случае отрицательных чисел, но Math.trunc() не выйдет из строя в случае отрицательных чисел.
Получите частное и остаток от целочисленного деления с помощью побитовых операторов в JavaScript
В JavaScript мы можем получить частное и остаток от деления с помощью побитовых операторов. Например, мы можем получить частное от деления, используя побитовое NOT ~~ или побитовое OR |0 , которое преобразует число с плавающей запятой в целое. А чтобы получить остаток, мы можем использовать символ % . Например, давайте найдем частное и остаток от 13, разделенного на 5. См. Код ниже.
var a = 13; var b = 5; var quo = ~~(a/b); var rem = a%b; console.log('Quotient = ',quo,'Remainder = ',rem);
Как видите, результат такой же, как и у описанного выше метода. Производительность поразрядных операторов выше по сравнению с библиотекой Math , но способность обрабатывать большие числа меньше. Итак, если у вас маленькие числа, вы можете использовать побитовые операторы; в противном случае используйте библиотеку Math . Побитовые операторы также могут обрабатывать отрицательные числа. Вы также можете использовать функцию parseInt() для преобразования числа с плавающей запятой в целое число. Если вы не хотите использовать какие-либо функции, вы можете использовать простую формулу с оператором остатка % , как показано ниже.
var a = 13; var b = 5; var rem = a%b; var quo = (a-rem)/b; console.log('Quotient = ',quo,'Remainder = ',rem);
Как видите, результат такой же, как и у описанных выше методов.
Hello! I am Ammar Ali, a programmer here to learn from experience, people, and docs, and create interesting and useful programming content. I mostly create content about Python, Matlab, and Microcontrollers like Arduino and PIC.
Division (/)
The division ( / ) operator produces the quotient of its operands where the left operand is the dividend and the right operand is the divisor.
Try it
Syntax
Description
The / operator is overloaded for two types of operands: number and BigInt. It first coerces both operands to numeric values and tests the types of them. It performs BigInt division if both operands becomes BigInts; otherwise, it performs number division. A TypeError is thrown if one operand becomes a BigInt but the other becomes a number.
For BigInt division, the result is the quotient of the two operands truncated towards zero, and the remainder is discarded. A RangeError is thrown if the divisor y is 0n . This is because number division by zero returns Infinity or -Infinity , but BigInt has no concept of infinity.
Examples
Basic division
1 / 2; // 0.5 Math.floor(3 / 2); // 1 1.0 / 2.0; // 0.5 1n / 2n; // 0n 5n / 3n; // 1n -1n / 3n; // 0n 1n / -3n; // 0n 2n / 2; // TypeError: Cannot mix BigInt and other types, use explicit conversions // To do division with a BigInt and a non-BigInt, convert either operand 2n / BigInt(2); // 1n Number(2n) / 2; // 1
Division by zero
2.0 / 0; // Infinity 2.0 / 0.0; // Infinity, because 0.0 === 0 2.0 / -0.0; // -Infinity 2n / 0n; // RangeError: Division by zero
Specifications
Browser compatibility
BCD tables only load in the browser
See also
Found a content problem with this page?
This page was last modified on Mar 28, 2023 by MDN contributors.
Your blueprint for a better internet.
MDN
Support
Our communities
Developers
Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998– 2023 by individual mozilla.org contributors. Content available under a Creative Commons license.