[PHP] Jak zaokrąglać liczby zmiennoprzecinkowe ?

Programowanie
[PHP] Jak zaokrąglać liczby zmiennoprzecinkowe ?

Jak zaokrąglać liczby zmiennoprzecinkowe ?

W PHP mamy kilka funkcji służących do zaokrąglania liczb zmiennoprzecinkowych:

ceil
Funkcja ta powoduje zaokrąglenie liczby zmiennoprzecinkowej w górę np. jeśli mamy liczbę 4.2 spowoduje ona zaokrąglenie tej liczby do 5. Jedynym przypadkiem gdy zaokrąglenie w górę nie nastąpi jest przypadek gdy liczba posiada część ułamkową równą zero np. 4.0 użycie na tej liczbie funkcji ceil nie przyniesie żadnego rezultatu.

Przykład:

echo ceil(4.3);   // wyświetli 5
echo ceil(9.999); // wyświetli 10
echo ceil(-3.14); // wyświetli -3

floor
Możemy powiedzieć że ta funkcja jest przeciwieństwem funkcji ceil gdyż powoduje ona zaokrąglenie liczby w dół tzn. że jeśli mamy liczbę 4.2 to po zastosowaniu na niej funkcji floor otrzymamy cyfrę 4 i identycznie jak w przypadku funkcji ceil w przypadku gdy część ułamkowa jest równa zero użycie funkcji nie spowoduje żadnych zmian.

round
Funkcja zwraca zaokrągloną wartość przekazaną jako pierwszy parametr, zaś drugim parametrem jest liczba miejsc po przecinku do której ma nastąpić zaokrąglenie.

Przykład:

echo round(3.4);        // wyświetli 3.0
echo round(3.5);        // wyświetli 4.0
echo round(3.6);        // wyświetli 4.0
echo round(3.6,0);      // znaczy to samo, co zapis 1 wiersz wyżej
echo round(1.95583,2);  // wyświetli 1.96
echo round(1241757,-3); // wyświetli 1242000

number_format
Funkcja ta ma duże możliwości jeśli chodzi o zaokrąglanie cyfr zmiennoprzecinkowych, gdyż jako jeden z jej parametrów przekazujemy do ilu miejsc po przecinku liczba ma zostać zaokrąglona, poza tym możemy jeszcze zdefiniować wygląd wyniku jaki zostanie przez funkcję zwrócony. Najlepszym rozwiązaniem będzie omówienie prototypu funkcji:

string number_format( float $wartosc [, int $miejsc_dziesiętnych [, string $przecinek_dziesiętny, string $separator_tysięcy]])

$wartosc – liczba bądź wyrażenie którego wynikiem będzie liczba
$miejsc_dziesiętnych – ilość liczb znajdujących się po przecinku
$przecinek_dziesiętny – separator jaki ma zostać użyty do rozdzielenia całości od części ułamkowej liczby
$separator_tysięcy – separator jaki ma zostać użyty do rozdzielenia części tysięcznych liczby

Przykład:

$liczba = 1234.5678; // notacja angielska (domyślna)

echo number_format($liczba);           // wyświetli 1,234.57
echo number_format($liczba,2,',',' '); // wyświetli 1 234,57
echo number_format($liczba, 2,'.',''); // wyświetl 1234.57