Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> floor źle działa, niemożliwe? A jednak!
php programmer
post
Post #1





Grupa: Zarejestrowani
Postów: 1 045
Pomógł: 5
Dołączył: 8.11.2004
Skąd: trójmiasto

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


Oto kod
  1. <?php
  2. echo $liczba = 7/0.14;
  3. echo '<br />';
  4. echo floor($liczba);
  5. ?>


Który wyświetla mi
50
49

Jakoby zaokrągleniem w dół liczby 50 było 49!
Czy ktoś wie dlaczego mi tak robi i jak to ominąć.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
likemandrake
post
Post #2





Grupa: Zarejestrowani
Postów: 175
Pomógł: 17
Dołączył: 23.06.2006

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


Problem polega wlasnie na tym co mowil moj poprzednik, aby ten temat sobie blizej przyblizyc, nalezy poczytac o tym, jak binarnie sa kodowane liczby po przecinku i mowa tu o liczbach zmiennoprzecinkowych. Cala sprawa kreci sie wtedy wokol kodowania FP2.

Na szybko mowiac, dla przykladu mamy taki ciag binarny (podzielony na grupy):

1|101|100101

liczba w pierwszej grupie jest to znak (+/-)
liczby w drugiej jest to cecha, inaczej zakres liczby
liczby w trzeciej grupie to mantysa, jest to tak naprawde nasza liczba, tyle ze zamieniona tak, zeby byla po przecinku

Jest wzór, wg którego obliczamy (odkodowujemy) liczbę zawartą w tym kodzie, ale ze względu na użyte potęgi, nie podałem go tu, a więc zainteresowanych odsyłam do google.pl

Chodzi o to, ze im mamy część całkowitą dalszą od zera, tym jej wartość po przecinku staje sie mniej dokladna i coraz bardziej zaokraglana wraz ze zwiększaniem tej odległości.

Co do problemu postawionego w tym poście, mam rozumieć, że w obu przypadkach chcemy uzyskać liczbę 50?
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 17.10.2025 - 08:51