Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Dodawanie przedrostków wielkości
robi783
post
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 27.06.2007

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


Witam wszystkich.
Chciałbym zapytać czy zna ktoś jakieś proste zrozwiązanie na wyświetlanie liczb zamiast w postaci np. 4e+9 Hz w postaci bardziej czytelnej 4Ghz. Dane pobierane są z bazy MySQL przez zapytania PHP i wyświetlane na stronie html.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Krzasz
post
Post #2





Grupa: Zarejestrowani
Postów: 56
Pomógł: 0
Dołączył: 29.08.2003
Skąd: Warszawa

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


$a w kodzie oznacza liczbę pobieraną z bazy, do której ma być przedrostek

  1. <?php
  2.  
  3. $a = 20000000;
  4. $jednostka = 'Hz';
  5.  
  6. $przedrostki = array();
  7. $przedrostki[18] = 'E';
  8. $przedrostki[15] = 'P';
  9. $przedrostki[12] = 'T';
  10. $przedrostki[9] = 'G';
  11. $przedrostki[6] = 'M';
  12. $przedrostki[3] = 'k';
  13. $przedrostki[2] = 'h';
  14. $przedrostki[1] = 'da';
  15. $przedrostki[0] = '';
  16. $przedrostki[-1] = 'd';
  17. $przedrostki[-2] = 'c';
  18. $przedrostki[-3] = 'm';
  19. $przedrostki[-6] = 'ľ';
  20. $przedrostki[-9] = 'n';
  21. $przedrostki[-12] = 'p';
  22. $przedrostki[-15] = 'f';
  23. $przedrostki[-18] = 'a';
  24.  
  25. $log = (int)round(log10(abs($a)));
  26. $b = round($a/pow(10, $log));
  27.  
  28. while (!array_key_exists($log, $przedrostki) || abs($log) > 18) {
  29.  if ($log < 0) {
  30.  $log++;
  31.  $b = round($b/10);
  32. } else {
  33.  $log--;
  34.  $b = round($b*10);
  35. }
  36. }
  37.  
  38. if ($log < -18) {
  39.  $b = round($b*pow(10, 18));
  40.  $log = -18;
  41. }
  42.  
  43. if ($log > 18) {
  44.  $b = round($b/pow(10, 18));
  45.  $log = 18;
  46. }
  47.  
  48. echo $b.' '.$przedrostki[$log].$jednostka;
  49.  
  50. ?>


Sprawdź powinno być ok.

Ten post edytował Krzasz 15.09.2007, 22:55:52
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: 3.10.2025 - 12:12