Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]reszta z dzieleniadalczego ujemna
mako11
post 2.11.2014, 23:53:54
Post #1





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 22.02.2012

Ostrzeżenie: (0%)
-----


  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?
Go to the top of the page
+Quote Post
Pyton_000
post 3.11.2014, 00:23:46
Post #2





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Liczba za duża.
Użyj tego:
http://pl1.php.net/manual/en/function.fmod.php
Go to the top of the page
+Quote Post
mako11
post 3.11.2014, 09:23:07
Post #3





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 22.02.2012

Ostrzeżenie: (0%)
-----


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 ?

Ten post edytował mako11 3.11.2014, 09:25:50
Go to the top of the page
+Quote Post
kreatiff
post 3.11.2014, 12:51:46
Post #4





Grupa: Zarejestrowani
Postów: 324
Pomógł: 105
Dołączył: 7.08.2012

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 13.07.2025 - 09:39