English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
В этой статье описывается метод реализации функции модуля для больших чисел (двоичных чисел) в PHP. Поделюсь с вами, вот как это можно сделать:
Обычно при выполнении операции модуля мы primero думаем о использование процента %, но когда делитель является очень большим значением, превышающим диапазон int, такая операция модуля не точна.
php функция модуля для больших чисел (двоичных чисел):
/** * php большая числовая функция модуля * * @param int or float $bn делитель * @param int $sn Делимое * @return int Оставшаяся часть */ //Метод получения остатка от большого числа (двоичной дроби) function Kmod($bn, $sn) { return intval(fmod(floatval($bn), $sn)); }
Тестовый код:
//Метод получения остатка от большого числа (двоичной дроби) function Kmod($bn, $sn) { return intval(fmod(floatval($bn), $sn)); } //Метод получения остатка от целого числа function mod($bn, $sn) { return $bn%$sn; } //Самое большое целое число $bn = PHP_INT_MAX; $sn = 11; var_dump($bn); var_dump(Kmod($bn, $sn)); var_dump(mod($bn, $sn)); //Добавление 1 к самому большому целому числу $bn = PHP_INT_MAX + 1; var_dump($bn); var_dump(Kmod($bn, $sn)); var_dump(mod($bn, $sn));
Результат выполнения:
int 2147483647 int 1 int 1 float 2147483648 int 2 int -2
Для тех, кто интересуется дополнительной информацией о PHP, можно посмотреть专题 статьи на сайте: "Суммирование математических операций PHP", "Суммирование операторов и использования операторов PHP", "Суммирование использования строк (string) в PHP", "Полное руководство по операциям массива (Array) в PHP", "Суммирование алгоритмов и методов遍ения PHP", "Урок по структурам данных и алгоритмам PHP", "Суммирование алгоритмов программирования PHP", "Суммирование использования регулярных выражений в PHP" и "Суммирование общих операций с базами данных в PHP".
Надеюсь, что информация, изложенная в этой статье, поможет вам в разработке PHP-программ.
Заявление: содержимое статьи взято из Интернета, авторские права принадлежат авторам, контент предоставлен пользователями Интернета, сайт не обладает правами собственности, не был отредактирован вручную, и не несет ответственности за соответствующие юридические вопросы. Если вы обнаружите спорное содержание, пожалуйста, отправьте письмо по адресу: notice#oldtoolbag.com (во время отправки письма замените # на @) для жалоб и предоставьте соответствующие доказательства. При подтверждении факта, сайт немедленно удалит спорное содержимое.