За последние 24 часа нас посетили 19063 программиста и 1641 робот. Сейчас ищут 1730 программистов ...

Оператор %

Тема в разделе "PHP для новичков", создана пользователем Amatory999, 26 июл 2011.

  1. Amatory999

    Amatory999 Активный пользователь

    С нами с:
    23 июн 2009
    Сообщения:
    93
    Симпатии:
    0
    Здравствуйте!

    PHP 5.3.6
    windows 7 x64:
    echo (2615080871 % 1000)

    Результат:
    -425

    PHP 5.3.5
    Ubuntu x64:
    echo (2615080871 % 1000)

    Результат:
    871

    Я так понимаю в win происходит переполнение int. Как это лечить? Заранее благодарен за ваши ответы!
     
  2. alexfer

    alexfer Активный пользователь

    С нами с:
    2 авг 2010
    Сообщения:
    239
    Симпатии:
    0
    ubuntu x32
    -425
     
  3. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    2615080871 за 32 бита не вылезает. хз =) баги
     
  4. Amatory999

    Amatory999 Активный пользователь

    С нами с:
    23 июн 2009
    Сообщения:
    93
    Симпатии:
    0
    Так вылезает за диапазон int.
     
  5. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    При чем тут баги?

    Макконнела читать надо )))

    В разных операционках будет разный int
     
  6. Amatory999

    Amatory999 Активный пользователь

    С нами с:
    23 июн 2009
    Сообщения:
    93
    Симпатии:
    0
    tommyangelo, ничего по делу...
    Какое приведение к типу в PHP? echo (floatval(2615080871) % 1000) - не помогает.
    Пока решил таким вот способом, если кому нибудь понадобиться:

    function mod($a, $b) {
    return ($a - (floor($a / $b) * $b));
    }