@Up: Kolejność wykonywania działań ma się w najlepsze w PHP.
Problemem jest wielkość liczb. 76561197960265728 nie może być traktowana jako liczba całkowita ponieważ jest za duża (PHP nie ma typu
long, który by pomieścił taką liczbę), a więc jest traktowana jako liczba zmiennoprzecinkowa:
var_dump(76561197960265728
); // float(7.65611979603E+16)
Liczby zmiennoprzecinkowe mają natomiast to do siebie, że potrafią utracić część danych (zarówno przy operacjach na dużych liczbach jak i ich części ułamkowej), co skutkuje takim właśnie zachowaniem.
Cytując za manualem:
Cytat
So never trust floating number results to the last digit, and never compare floating point numbers for equality. If higher precision is necessary, the arbitrary precision math functions and gmp functions are available.
http://www.php.net/manual/en/ref.bc.phphttp://www.php.net/manual/en/ref.gmp.php