Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Zaokrąglanie liczb
slawek3422
post
Post #1





Grupa: Zarejestrowani
Postów: 142
Pomógł: 7
Dołączył: 3.08.2007
Skąd: śląsk

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


Cześć.
Utknąłem nad pewnym problemem, pewnie banalnym dla wielu tu obecnych.

Mam liczby, dla których chcę zrobić operację zaokrąglania, jeżeli druga liczba po przecinku jest 1-4 wtedy zaokrąglenie w górę, a od 5-9 zaokrąglenie w dół.

Przykład:

35.04 => 35.10
17.59 => 17.50

Funkcją round(); nie bardzo mi to wychodzi. Jak to sprytnie ogarnąć?

Ten post edytował slawek3422 6.08.2021, 12:17:40
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
trueblue
post
Post #2





Grupa: Zarejestrowani
Postów: 6 807
Pomógł: 1828
Dołączył: 11.03.2014

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


Wypróbuj tak:

  1. $a = 34.02;
  2. $pow = floor(log10($a - intval($a)));
  3. if(!is_infinite($pow)) {
  4. $a = intval($a) + round(pow(10, $pow + 1) - ($a - intval($a)), abs($pow) - 1);
  5. }
  6. echo $a;


Działa to tak, że zaokrąglana jest odwrotność frakcji dziesiętnej.
Dla 0.02 zaokrąglane jest 0.08, dla 0.1 zaokrąglane jest 0.9.

Poprawka:

  1. $a = 34.02;
  2. $hundredth = round($a * 10 - intval($a * 10), 1) / 10;
  3. if ($hundredth > 0) {
  4. $a = intval($a * 10) / 10 + round(0.1 - $hundredth, 1) / 2;
  5. }
  6. echo $a;


Ten post edytował trueblue 7.08.2021, 14:20:42
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: 10.10.2025 - 18:15