7
Come utilizzare% correttamente per non ottenere risultati negativi?php% (funzione mod) diventa negativo su numeri grandi. Come liberarsene?
<?php
$x = 1103515246*12345;
echo $x." ".decbin($x)."</BR>";
$y = $x % (1 << 15);
echo $y." ".decbin($y)."</BR>";
?>
uscita:
13622895711870 11010011110111000001011001111110
-27010 11111111111111111001011001111110
risolto
$y = bcmod($x,(1 << 15));
risolve il problema. Grazie per l'aiuto rapido! Era la mia prima domanda!
ottengo risultati diversi (5758 per la seconda eco). Quale versione di PHP stai usando? –
@ChrisHanson, suppongo che tu abbia il sistema 64but – RiaD
Puoi leggere su [come PHP gestisce gli interi] (http://php.net/manual/en/language.types.integer.php). * "Se PHP incontra un numero oltre i limiti del tipo intero, verrà interpretato come un float.Inoltre, un'operazione che restituisce un numero oltre i limiti del tipo intero restituirà invece un valore float." * – Matt