Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]reszta z dzieleniadalczego ujemna
Forum PHP.pl > Forum > Przedszkole
mako11
  1. $liczba = 955555555790;
  2. $tablica = array();
  3. while ($liczba > 0 ){
  4. $reszta = $liczba % 2;
  5. echo $reszta;
  6. $tablica[] = $reszta;
  7. $liczba =($liczba/2);
  8. $liczba = floor($liczba);
  9. }

wynik:01-1-1001-1-100101010011000111011110011110111101111001111011100011001010100-1-1100-1-110
Dlaczego reszta z dzielenia niekiedy daje wynik -1?
Pyton_000
Liczba za duża.
Użyj tego:
http://pl1.php.net/manual/en/function.fmod.php
mako11
Dzięki o to chodziło, tak myślałem że liczba za duża (ale ma być duża), w manualu php Arithmetic Operators, nie było napisane tłustym drukiem o zakresach liczbowych a powinno być dopiero, w notatkach użytkowników znalazłem wyjaśnienie

Cytat
Note that operator % (modulus) works just with integers (between -214748348 and 2147483647) while fmod() works with short and large numbers.

Modulus with non integer numbers will give unpredictable results.

Jak myślicie , obliczania na dużych liczbach chyba wymagają użycia biblioteki GMP ?
kreatiff
Dla bardzo wielkich liczb (więcej niż kilkadziesiat cyfr) można też napisać własne funkcje, które operują na stringach i pozycjach cyfr w liczbie. Na zasadzie działań "w tzw. słupkach" (dokładnie od czego każdy z nas zaczynał podstawowe 4 działania na liczbach, gdy patyczki już nie wystarczały smile.gif ).
Liczby większe niż te 2 miliardy, ale mniejsze niż 9223372036854775807 obsłuży bez dodatkowych bibliotek system 64 bitowy (ale nie Windows), np. PHP postawiony na Linuksie.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.