Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Liczba miejsc po przecinku
Zielonkawy18
post 8.11.2012, 01:43:27
Post #1





Grupa: Zarejestrowani
Postów: 152
Pomógł: 4
Dołączył: 4.10.2012

Ostrzeżenie: (10%)
X----


Witam, otóż prosta matematyka:

2000/31=64,516129032258064516129032258065

chcę uzyskać liczbę 64,51 czyli 2 miejsca po przecinku bez ŻADNYCH zaokrągleń. Funkcja round() odpada ( zaokrągla ) oraz number_format() to samo.

Pozdrawiam


--------------------
C/C++/C#/JAVA/SQL ( funkcje, procedury, pakiety ).
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
dr_NO
post 8.11.2012, 04:51:33
Post #2





Grupa: Zarejestrowani
Postów: 197
Pomógł: 15
Dołączył: 10.09.2006
Skąd: Siemianowice Śląskie / Katowice

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


To może na około?

testowo: http://arbre.pl/test.php;

kod:
  1. <h1>Testuj pehapy...</h1>
  2. <?php
  3. $wynik = 2000/31;
  4. $wynik_czesc = explode('.',$wynik);
  5. $wynik_dociety = $wynik_czesc[0].'.'.substr($wynik_czesc[1],0,2);
  6.  
  7. echo $wynik_dociety;
  8.  
  9. echo '<br /><br /><b>operacje na zmiennej $wynik_dociety</b><br /><br />';
  10. echo 'mnożenie(x2): <b>'.($wynik_dociety*2).'</b><br />';
  11. ?>


i funkcja do tego...

  1. <?php
  2. function zaokragl($wynik,$ile) { //pierwszy argument to jakiekolwiek wynik działania, drugi zaś, mówi ile znaków po przecinku ma być wydocznych.
  3. $wynik_czesc = explode('.',$wynik); //rozdziel wynik
  4. $wynik_dociety = $wynik_czesc[0].'.'.substr($wynik_czesc[1],0,$ile); //przytnij znaki po przecinku do: $ile
  5. return $wynik_dociety; //zwróć wynik.
  6. }
  7.  
  8. //dzialanie:
  9. $dzialanie = 2000/31;
  10. zaokragl($dzialanie,2);
  11.  
  12. ?>


Ten post edytował dr_NO 8.11.2012, 04:58:12


--------------------
woop woop.
Go to the top of the page
+Quote Post
czychacz
post 8.11.2012, 09:46:02
Post #3





Grupa: Zarejestrowani
Postów: 189
Pomógł: 13
Dołączył: 20.09.2008
Skąd: Lublin

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


http://php.net/manual/en/function.round.php
Go to the top of the page
+Quote Post
abort
post 8.11.2012, 11:49:39
Post #4





Grupa: Zarejestrowani
Postów: 590
Pomógł: 107
Dołączył: 25.10.2011

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


Jeśli z 64,516129032258064516129032258065 chcesz otrzymać 64,51 (a nie 64,52, które jest poprawnym zaokrągleniem), to:

  1. $x=64.516129032258064516129032258065;
  2. $desired = floor(100*$x)/100;


Oczywiście aż się prosi, aby obudować to w funkcję. A jak potrzebujesz obcinać N znaków po przecinku (dla różnych N), to też jest to wykonalne.

Ten post edytował abort 8.11.2012, 11:50:16
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 18.07.2025 - 00:50