Wątek przeniesiony 2015-02-28 21:20 z PHP przez dzek69.

Dzielenie liczb i zapisanie wyniku

0

Dzielę dwie liczby przez siebie, w wyniku otrzymując coś takiego: 9,9939 (...).
Znalazłem pewną funkcję w necie, kawałek dot. zapisu wygląda tak:

number_format($bytes / 1073741824, $precision)

I teraz mam taki problem, że nie wiem jak zapisać ten wynik w postaci: 9,99
Przy zaokrąglaniu w górę dostaję pełne 10, przy zaokrąglaniu w dół dostaję równe 9. Przy użyciu number_format też zaokrągla w górę i daje wynik 10. Jest jakaś funkcja, która to ogarnie tak jak chcę czy muszę na sztywno ten wynik obrobić np. substr ?

0

zaokrąglij(liczba * 100) / 100

0

jak chcesz sformatować to może funkcja sprintf będzie właściwą?

0

echo number_format(9.9939, 2); ...
Zamiast 9.9939 wstaw swoje równanie.

0

Żadna z powyższych porad nie jest poprawna.

Jeśli wstawimy liczbę, która po przecinku ma tylko dwie dziewiątki, a potem jakąś mniejszą liczbę to owszem, te sposoby zadziałają. Wstawcie sobie tam np. taką liczbę:

9.999984

Każdy z ww. sposobów zwróci 10 bo drugie miejsce po przecinku to 9, a jako że trzecie miejsce po przecinku do też 9 to wszystkie funkcje zaokrąglają z automatu drugie miejsce do zera, więc pierwsze miejsce po przecinku też łapie się do zera z automatu, tak więc główna liczba przyjmuje postać 10 w takim wypadku.

Efekt: 10.00

Oto konkretna liczba, którą chcę zaokrąglić do np. 9.99, 9.98 itd.

(10733842596/1073741824)

Przykład:

echo round((10733842596/1073741824), 2); // 10.00
echo number_format((10733842596/1073741824), 2); // 10.00

sprintf też zwraca 10.

1

Mylisz pojęcia, Ty nie chcesz zaokrąglić.

floor(x*100)/100
0

@majkelo: a Ty przypadkiem nie liczysz progresu lub procentów?
Bo tak wygląda jakbyś chciał uniknąć 100%.

1 użytkowników online, w tym zalogowanych: 0, gości: 1