Целочисленное деление с остатком в JavaScript?
JavaScript вычисляет правильно пол отрицательных чисел и остаток нецелых чисел, следуя математическим определениям для них.
FLOOR определяется как «наибольшее целое число, меньшее параметра», таким образом:
- положительные числа: пол (X)=целая часть X;
- отрицательные числа: FLOOR (X)=целая часть X минус 1 (потому что она должна быть SMALLER, чем параметр, т. е. больше отрицательного!)
REMAINDER определяется как «left over» деления (евклидова арифметика). Когда дивиденд не является целым числом, частное обычно также не является целым числом, т. е. нет никакого остатка, но если частное вынуждено быть целым числом (а именно это происходит, когда кто-то пытается получить остаток или модуль числа с плавающей запятой), то, очевидно, будет нецелым «оставшимся».
JavaScript действительно вычисляет все так, как ожидалось, поэтому программист должен быть осторожен, чтобы задавать правильные вопросы (и люди должны быть осторожны, чтобы ответить на то, что спрашивается!) Первый вопрос Ярина был NOT «что такое целочисленное деление X на Y», но вместо этого «the WHOLE number of times a given integer GOES INTO another». Для положительных чисел ответ одинаков для обоих, но не для отрицательных чисел, потому что целочисленное деление (дивиденд по делителю) будет на -1 меньше, чем умноженное на число (делитель) «goes into» другое (дивиденд). Другими словами, FLOOR вернет правильный ответ на целочисленное деление отрицательного числа, но Ярин об этом не спрашивал!
gammax ответил правильно, что код работает так, как просил Ярин. С другой стороны, Сэмюэль ошибается, он не занимался математикой, я думаю, иначе он увидел бы, что это действительно работает (кроме того, он не сказал, каков был делитель его примера, но я надеюсь, что это было 3):
Остаток = X % Y = -100 % 3 = -1
GoesInto = (X-Остаток) / Y = (-100 — -1) / 3 = -99 / 3 = -33
Кстати, я тестировал код на Firefox 27.0.1, он работал, как и ожидалось, с положительными и отрицательными числами, а также с нецелыми значениями, как для дивиденда, так и для делителя. Пример:
-100.34 / 3.57: GoesInto = -28, остаток = -0.3800000000000079
Да, я заметил, что там есть проблема точности, но у меня не было времени проверить ее (я не знаю, является ли это проблемой с Firefox, Windows 7 или с моим CPU FPU). Однако для вопроса Ярина, который касается только целых чисел, код gammax работает идеально.
Целочисленное деление с остатком в JavaScript?
JavaScript вычисляет прямо пол отрицательных чисел и остаток нецелых чисел, следуя математическим определениям для них.
FLOOR определяется как «наибольшее целое число, меньшее, чем параметр», таким образом:
- положительные числа: FLOOR (X) = целая часть X;
- отрицательные числа: FLOOR (X) = целая часть X минус 1 (потому что она должна быть МЕНЬШЕ, чем параметр, т. е. более отрицательной!)
REMAINDER определяется как «остаток» от деления (евклидова арифметика). Когда дивиденд не является целым числом, частное обычно также не является целым числом, т. Е. Нет остатка, но если частное вынуждено быть целым числом (и это то, что происходит, когда кто-то пытается получить остаток или модуль число с плавающей запятой), очевидно, будет нецелое «осталось».
JavaScript действительно рассчитывает все, как и ожидалось, поэтому программист должен быть осторожным, чтобы задавать правильные вопросы (и люди должны быть осторожны, чтобы ответить на то, что спрашивают!) Первый вопрос Ярина был НЕ «что такое целочисленное деление X на Y», но, вместо этого, «ВЕСЬ количество раз, когда данное целое число ПРОХОДИТ В другое». Для положительных чисел ответ одинаков для обоих, но не для отрицательных, потому что целочисленное деление (делитель на делитель) будет на -1 меньше, чем число, которое (делитель) «переходит» в другое (делимое). Другими словами, FLOOR вернет правильный ответ для целочисленного деления отрицательного числа, но Ярин этого не спрашивал!
gammax правильно ответил, что код работает так, как спросил Ярин. С другой стороны, Самуил не прав, он, наверное, не делал математику, иначе он бы увидел, что это работает (кроме того, он не сказал, что было делителем его примера, но я надеюсь, что это было 3):
Остаток = X% Y = -100% 3 = -1
GoesInto = (X — остаток) / Y = (-100 — -1) / 3 = -99 / 3 = -33
Кстати, я протестировал код на Firefox 27.0.1, он работал как положено, с положительными и отрицательными числами, а также с нецелыми значениями, как для делимого, так и для делителя. Пример:
-100,34 / 3,57: GoesInto = -28, остаток = -0,3800000000000079
Да, я заметил, что здесь есть проблема точности, но у меня не было времени проверить ее (я не знаю, проблема ли это с Firefox, Windows 7 или с FPU моего процессора). Что касается вопроса Ярина, который включает только целые числа, код gammax работает отлично.
Автор: Cyberknight Размещён: 27.02.2014 07:23javascript — Целочисленное деление с остатком в JavaScript?
ПОЛ определяется как «наибольшее целое число, меньшее, чем значение параметра», таким образом:
- положительные числа: пол (Х) = целая часть X;
- отрицательные числа: FLOOR (X) = целая часть X минус 1 (потому что он должен быть меньше, чем значение параметра, то есть, более отрицательный!)
REMAINDER определяются как «оставшийся» из деления (евклидовые арифметики). Когда дивиденды, не является целым числом, фактор, как правило, также не является целым числом, то есть, нет никакого остатка, но если фактор вынужден быть целым числом (и это то, что происходит, когда кто-то пытается получить остаток или модуль упругости число с плавающей точкой), будет не целым «осталось», очевидно.
JavaScript делает все просчитать, как и ожидалось, поэтому программист должен быть осторожным, чтобы задавать правильные вопросы (и люди должны быть осторожными, чтобы ответить на то, что спрашивается!) Первый вопрос Ярина был НЕ «что является целым числом деление X по Y», но, вместо этого, «целое число раз в заданное целое число переходит в другое». Для положительных чисел, ответ является одинаковым для обоих, но не для отрицательных чисел, так как целочисленное деление (дивиденды по делителю) будет равен -1 меньше, чем раз число (делитель) «переходит в» другой (дивидендов). Другими словами, FLOOR возвращает правильный ответ для целочисленного деления отрицательного числа, но Ярина не спрашивали, что!
gammax правильно ответил, что код работает как спросил Ярина. С другой стороны, Самуил так, что он не делал математику, я думаю, или он увидел бы, что он работает (также, он не сказал, что был делителем его примеру, но я надеюсь, что это было 3):
Остаток = Х% Y = -100% 3 = -1
GoesInto = (Х — остаток) / Y = (-100 — -1) / 3 = -99/3 = -33
Кстати, я проверил код на Firefox 27.0.1, он работал, как и ожидалось, с положительными и отрицательными числами, а также с нецелых значений, как для делимого и делителя. Пример:
-100,34 / 3,57: GoesInto = -28, относящиеся к = -0,3800000000000079
Да, я заметил, есть высокоточная проблема есть, но я не имел время, чтобы проверить его (я не знаю, если это проблема с Firefox, Windows 7 или с FPU моего процессора). На вопрос Ярина, хотя, что только включает в себя целые числа, код gammax работает отлично.
Целочисленное деление с остатком в JavaScript?
JavaScript вычисляет прямо число отрицательных чисел и остаток нецелых чисел, следуя математическим определениям для них.
FLOOR определяется как «наибольшее целое число, меньшее, чем параметр», таким образом:
- положительные числа: FLOOR (X) = целая часть X;
- отрицательные числа: FLOOR (X) = целая часть X минус 1 (потому что она должна быть МЕНЬШЕ, чем параметр, т. е. более отрицательной!)
REMAINDER определяется как «остаток» от деления (евклидова арифметика). Когда дивиденд не является целым числом, частное, как правило, также не является целым числом, то есть нет остатка, но если частное вынуждено быть целым числом (и это то, что происходит, когда кто-то пытается получить остаток или модуль число с плавающей запятой), очевидно, будет нецелое «осталось».
JavaScript действительно рассчитывает все, как и ожидалось, поэтому программист должен быть осторожным, чтобы задавать правильные вопросы (и люди должны быть осторожны, чтобы ответить на то, что спрашивают!) Первый вопрос Ярина был НЕ «что такое целочисленное деление X на Y», но, вместо этого, «ВСЕ число раз, которое данное целое число ПРОХОДИТ В другое». Для положительных чисел ответ одинаков для обоих, но не для отрицательных чисел, поскольку целочисленное деление (делитель на делитель) будет на -1 меньше, чем число, которое (делитель) «переходит в» другое (делимое). Другими словами, FLOOR вернет правильный ответ для целочисленного деления отрицательного числа, но Ярин этого не спрашивал!
gammax правильно ответил, что код работает так, как спросил Ярин. С другой стороны, Самуил не прав, он, наверное, не делал математику, иначе он бы увидел, что это работает (кроме того, он не сказал, что было делителем его примера, но я надеюсь, что это было 3):
Остаток = X% Y = -100% 3 = -1
GoesInto = (X — остаток) / Y = (-100 — -1) / 3 = -99 / 3 = -33
Кстати, я протестировал код на Firefox 27.0.1, он работал как положено, с положительными и отрицательными числами, а также с нецелыми значениями, как для делимого, так и для делителя. Пример:
-100,34 / 3,57: GoesInto = -28, остаток = -0,3800000000000079
Да, я заметил, что там есть проблема точности, но у меня не было времени проверить ее (я не знаю, проблема ли это с Firefox, Windows 7 или с FPU моего процессора). Что касается вопроса Ярина, который включает только целые числа, код gammax работает отлично.
# Оператор деления по модулю · Странный JavaScript
- Странный JavaScript
- Введение
- Глава I — Старт
- Hello World!
- Переменные
- # Типы данных в JavaScript
- Работа с селекторами
- Генерация DOM-объектов
- Объекты
- #Строки
- #Цикл for
- #Массивы
- # Конструкция if
- # alert prompt confirm
- # Применение флагов
- Функции
- # Оператор деления по модулю
- # Повторения событий
- # Цикл while
- Массивы подробнее
- # Ассоциативные массивы
- # Тренировочные задачи
- # Контрольная работа
- Контрольная работа
- Глава II — События
- Способы установки обработчика
- # Использование this в обработчиках
- Объект event
- Стандартные события в JavaScript
- Всплытие событий
- # Делегирование событий
- # Обработчики событий по умолчанию
- #Интервалы и задержки
- # Debouncing
- Интересные материалы
- Контрольная работа
- Глава III — Работа с DOM
- #COFFEE DOM, BOM и JS Объекты
- # Типы узлов в DOM
- # Навигация по DOM
- # Создание и модификация узлов
- # Работа с формами
- # Работа с CSS
- Глава IV — Объекты Браузера
- # AJAX и JSON
- # navigator, screen, location
- #COFFEE Продвинутая консоль
- # history
- # cookies
- #COFFEE Создаем простейшее SPA
- #Drag-n-Drop
- #clipboardData
- #FileReader
- #COFFEE LocalStorage
- Глава V — Frontend
- NPM
- Работа с Git
- Gulp
- Работа с бандлами
- #ESLint
- Unit-тесты
- Глава VI — ООП
- Способы создания объектов
- Контекст вызова функции
- Замыкания
- Утечки памяти
- Паттерн Модуль
- # Прототипы
- apply,call,bind
- ECMAScript модули
- Глава VII- ES6-ES7
- Использование let
- Стрелочные функции
- Классы
- Promises
- async/await
- Глава VIII — jQuery
- Быстрый старт
- #Работа с элементами страницы
- #События
- # Анимация
- # AJAX
- # Модификация DOM
- # Работа с формами
- # Плагины
- #COFFEE Техника Map-Reduce
- #COFFEE Promises
- Код jQuery
- Глава IX — Регулярные выражения
- Синтаксис регулярных выражений
- match
- split
- replace
- Глава X — Функциональное программирование
- #COFFEE Рекурсия
- # Техника Map-Reduce
- # Каррирование
- Мемоизация
- Глава XI — Веб-приложения
- # Концепция
- # «Инсталлируемое» веб-приложение
- # Работа в оффлайне
- # Работа с камерой
- # WebRTC
- # Service Workers
- # Web Push
- #Работа с файлами
- COFFEE WebComponents
- Глава XII -Webpack
- Webpack Start
- Разделение исходников и результата
- HtmlWebpackPlugin
- CSS в Webpack’e
- Сборка SASS
- Babel
- Webpack More
- Минификация
- Обфускация
- Глава XIII — Angular
- Angular Старт
- ng-init
- ng-repeat
- Модули
- Контроллеры
- Сервисы
- Директивы
- Кастомные директивы
- Scope директив
- $routeProvider, $locationProvider
- Factory
- Фильтры
- Unit-тесты в Angular
- # $watch $digest $apply
- # $broadcast, $emit, $on
- # $index,$event,$log
- Компоненты
- require, $onInit
- history, $location, $route
- Глава XIV — React
- React Старт
- Компоненты и свойства
- Работа с DOM-элементами
- State
- События
- Рендеринг на сервере
- Глава XV — Redux
- Redux Старт
- Глава XVI — Vue JS
- Vue Старт
- Базовые директивы
- Обработка событий
- Экземпляр Vue
- Работа с API
- Шаблоны
- Компоненты
- vue router
- vuex