PHP FAQ

Zaokrąglanie ułamków w PHP

Coldpeer
  • ceil() - zaokrąglanie w górę
  • floor() - zaokrąglanie w dół
  • round() - zaokrąglanie do najbliższej liczby całkowitej
  • number_format() - oprócz zaokrąglania, można jej użyć by sformatować liczbę z separatorem tysięcy i znakiem oddzielający część całkowitą od ułamkowej

Użycie

ceil(2.35); // 3
floor(2.75); // 2
round(2.45);  // 2
round(2.55);  // 3
FAQ

6 komentarzy

A skąd wytrzasneliście, że 153,6346 w zaokrągleniu do części setnych to 153,64 ? Pierwszą odrzuconą cyfrą(w tym przypadku rząd części tysięcznych) jest 4, a że 4<5 to nasza liczba w zaokrągleniu wyniesie 153,63!!!

Ja jednak uważam, że 153,6346 w przybliżeniu do dwóch miejsc po przecinku to jednak 15,63 a nie 153,64... Ja nie widzę żadnych błędów w zaokrąglaniu przez te funkcje.

Proponuję zwrócić uwagę na fakt iż round() jak i number_format() nie zaokrągli np. 153.6346 do dwóch miejsc po przecinku prawidłowo.

round(153.6346, 2); // 153.63
number_format(153.6346, 2, '.', '')

Jak widać wynik będzie wynosił 153.63 a nie jak powinno być 153.64.

Do poprawnego zaokrąglania można użyć funkcji:
http://pl2.php.net/manual/pl/function.round.php#78414
Testowałem ją zaledwie pobieżnie ale wyglądała dosyć ciekawie.

To coś czego szukałem

hehe, właśnie dodałem :p

No i chyba round tez by sie przydalo :P