Почему один код на php и js считает по разному?

215
10 июня 2018, 15:50

Есть php код для генерации последовательности чисел:

$seed = 100;
$seed = (1103515245 * $seed  + 12345) % (1 << 31);
dump($seed);
$seed = (1103515245 * $seed  + 12345) % (1 << 31);
dump($seed);

Он сгенерирует два числа:

829870797
1533044610

Этот же код переписанный на javascript:

    var seed = 100;
    seed = (1103515245 * seed  + 12345) % (1 << 31);
    console.log(seed); 
    seed = (1103515245 * seed  + 12345) % (1 << 31);
    console.log(seed);

Сгенерирует это:

829870797
1533044608

Почему второе число в js отличается и как это оба варианта привести к общему виду?

Answer 1

Оба вывода (и в PHP и в JavaScript) неправильны. С PHP здесь тоже самое, что и с JavaScript, описанное мной ниже.

Число (1103515245 * 829870797) выходит за пределы точности чисел в JavaScript. Смотрите ответ на английском StackOverflow про это.

Если вам в JavaScript нужно работать с такими числами, то пользуйтесь библиотекой BigInteger.js или Big Number.

READ ALSO
Передать значения формы через AJAX в PHP

Передать значения формы через AJAX в PHP

Как передать данные формы в php при помощи AJAX?

188
Добавление php кода в тело addScriptDeclaration

Добавление php кода в тело addScriptDeclaration

Подскажите, пожалуйста, как добавить вывод php кода в тело addScriptDeclaration?

190
Как поставить timeout?

Как поставить timeout?

Доброй ночи, заранее извиняюсь за глупый вопрос

190
Запрос по категориям. PHP+SQL

Запрос по категориям. PHP+SQL

Есть база данных с игроками, тренерами, командами и чемпионатамиКаждая новость должна находится в определенной категории

183