Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL]'Dziwne liczby'
Forum PHP.pl > Forum > Przedszkole
Ulysess
dzień dobry temat tak nazwałem ponieważ nie wiem w jakiej postaci są zapisywane liczby. mam tabele z typem double o długości 100 powyżej xxxxxxxxxxxxxx liczby jest zapisywane w takiej postacie '7.46268816209896e+17' pytanie jest takie czy jest możliwość aby liczby widniały w 'normalnym' systemie jeśli tak to jak tego dokonać . aha przed zapisem do bazy są na pewno w normalnej postaci ponieważ zastosowałem :

  1.  
  2. $wynik = number_format($zmienna_a+ $zmienna_b, 0, ',', '');
  3.  


z góry dziękuje za pomoc
moto0095
No to może zaokrąglij np tak:
  1. round($wynik, 14)
Ulysess
po pierwsze Twoje rozwiązanie nic nie zmienia a po drugie chodzi o to żeby było w bazie przetrzymywane w normalnej formie
moto0095
Tam gdzie masz tą 14 to ustaw inną liczbę i dodaj ten skrypt przy zapisie.
Ulysess
  1. $wynik = 7.46268816209896e+17;
  2. echo round($wynik, 40);


wyświetla mi w takiej samej formie w jakiej jest przypisana do zmiennej
moto0095
Funkcja round(); zaokrągla liczby:
  1. round(liczba_do_zaokrąglenia, ile_miejsc_po_przecinku);


EDIT//
Jak ustawiasz 40 to ci zaokrągli do 40 miejsc po przecinku.
Ustaw np 10.
Ulysess
tak wiem.. to nie jest liczba która zawiera ileś miejsc po przecinku tylko zapisana w 'dziwnej' dla mnie postaci.. sprawdź u siebie czy Twoje rozwiązanie w moim przykładzie coś daje..
moto0095
A zobacz tak:
  1. <?
  2. $wynik = 7.46268816209896e+17;
  3. $wynik2 = substr($wynik, 0, 10);
  4. echo $wynik2;
  5. ?>
Ulysess
to już lepiej zastosować:

  1. <?
  2. $w = number_format(7.46268816209896e+17, 0, ',', '');
  3. echo '<br>',$w;
  4. ?>


ale co z tego skoro w bazie i tak jest w postaci: "7.46268816209896e+17" ;/
moto0095
No to jak zapisujesz $wynik do bazy to zapisuj przy użyciu tak jak ci wyżej napisałem albo tak:
  1. <?
  2. $w = '7.46268816209896e+17';
  3. $e = explode('e', $w);
  4. echo $e[0];
  5. ?>

Pawel_W
Cytat(moto0095 @ 8.05.2010, 16:37:43 ) *
No to jak zapisujesz $wynik do bazy to zapisuj przy użyciu tak jak ci wyżej napisałem albo tak:
  1. <?
  2. $w = '7.46268816209896e+17';
  3. $e = explode('e', $w);
  4. echo $e[0];
  5. ?>

...questionmark.gif to jest notacja wykładnicza, usuwając końcówkę rozpieprzysz wszystko...
  1. <?php
  2. echo intval(7.46268816209896e+17);
  3. ?>

Ulysess
Paweł Twoje rozwiązanie dziwnie działa ponieważ wyświetla ' -786144768 ' a 7.46268816209896e+17 w 'normalnym' systemie to 746268816209896000. nie rozumiem czemu w bazie jest przetrzymywane w takiej formie - > "7.46268816209896e+17" :/
Pawel_W
trochę więcej googla smile.gif
  1. <?php
  2. echo rtrim(sprintf("%f", 7.46268816209896e+17),"0") . "<br />";
  3. ?>

Ulysess
hmm albo źle mnie rozumiesz albo ja nie rozumiem tego co piszesz biggrin.gif , ja nie mam problemu z wyświetleniem w 'normalnej formie' to co wyżej wkleiłem działa ja mam problem w tym aby w bazie było w 'normalnej' formie
Pawel_W
jeżeli dodajesz do bazy przez php to poczytaj manual, pow

pierwszy skrypt dodany przez @anonymous
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.