Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MySQL]'Dziwne liczby'
Ulysess
post
Post #1





Grupa: Zarejestrowani
Postów: 695
Pomógł: 65
Dołączył: 27.07.2009
Skąd: Y

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


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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 14)
moto0095
post
Post #2





Grupa: Zarejestrowani
Postów: 247
Pomógł: 9
Dołączył: 12.03.2010

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


No to może zaokrąglij np tak:
  1. round($wynik, 14)
Go to the top of the page
+Quote Post
Ulysess
post
Post #3





Grupa: Zarejestrowani
Postów: 695
Pomógł: 65
Dołączył: 27.07.2009
Skąd: Y

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


po pierwsze Twoje rozwiązanie nic nie zmienia a po drugie chodzi o to żeby było w bazie przetrzymywane w normalnej formie
Go to the top of the page
+Quote Post
moto0095
post
Post #4





Grupa: Zarejestrowani
Postów: 247
Pomógł: 9
Dołączył: 12.03.2010

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


Tam gdzie masz tą 14 to ustaw inną liczbę i dodaj ten skrypt przy zapisie.
Go to the top of the page
+Quote Post
Ulysess
post
Post #5





Grupa: Zarejestrowani
Postów: 695
Pomógł: 65
Dołączył: 27.07.2009
Skąd: Y

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


  1. $wynik = 7.46268816209896e+17;
  2. echo round($wynik, 40);


wyświetla mi w takiej samej formie w jakiej jest przypisana do zmiennej
Go to the top of the page
+Quote Post
moto0095
post
Post #6





Grupa: Zarejestrowani
Postów: 247
Pomógł: 9
Dołączył: 12.03.2010

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


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.

Ten post edytował moto0095 8.05.2010, 15:01:06
Go to the top of the page
+Quote Post
Ulysess
post
Post #7





Grupa: Zarejestrowani
Postów: 695
Pomógł: 65
Dołączył: 27.07.2009
Skąd: Y

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


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..
Go to the top of the page
+Quote Post
moto0095
post
Post #8





Grupa: Zarejestrowani
Postów: 247
Pomógł: 9
Dołączył: 12.03.2010

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


A zobacz tak:
  1. <?
  2. $wynik = 7.46268816209896e+17;
  3. $wynik2 = substr($wynik, 0, 10);
  4. echo $wynik2;
  5. ?>


Ten post edytował moto0095 8.05.2010, 15:18:15
Go to the top of the page
+Quote Post
Ulysess
post
Post #9





Grupa: Zarejestrowani
Postów: 695
Pomógł: 65
Dołączył: 27.07.2009
Skąd: Y

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


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" ;/

Ten post edytował Ulysess 8.05.2010, 15:24:11
Go to the top of the page
+Quote Post
moto0095
post
Post #10





Grupa: Zarejestrowani
Postów: 247
Pomógł: 9
Dołączył: 12.03.2010

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


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. ?>

Go to the top of the page
+Quote Post
Pawel_W
post
Post #11





Grupa: Zarejestrowani
Postów: 1 675
Pomógł: 286
Dołączył: 15.06.2009
Skąd: Wieliczka

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


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. ?>

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

Go to the top of the page
+Quote Post
Ulysess
post
Post #12





Grupa: Zarejestrowani
Postów: 695
Pomógł: 65
Dołączył: 27.07.2009
Skąd: Y

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


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" :/
Go to the top of the page
+Quote Post
Pawel_W
post
Post #13





Grupa: Zarejestrowani
Postów: 1 675
Pomógł: 286
Dołączył: 15.06.2009
Skąd: Wieliczka

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


trochę więcej googla (IMG:style_emoticons/default/smile.gif)
  1. <?php
  2. echo rtrim(sprintf("%f", 7.46268816209896e+17),"0") . "<br />";
  3. ?>

Go to the top of the page
+Quote Post
Ulysess
post
Post #14





Grupa: Zarejestrowani
Postów: 695
Pomógł: 65
Dołączył: 27.07.2009
Skąd: Y

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


hmm albo źle mnie rozumiesz albo ja nie rozumiem tego co piszesz (IMG:style_emoticons/default/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
Go to the top of the page
+Quote Post
Pawel_W
post
Post #15





Grupa: Zarejestrowani
Postów: 1 675
Pomógł: 286
Dołączył: 15.06.2009
Skąd: Wieliczka

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


jeżeli dodajesz do bazy przez php to poczytaj manual, pow

pierwszy skrypt dodany przez @anonymous

Ten post edytował Pawel_W 8.05.2010, 18:10:17
Go to the top of the page
+Quote Post

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: 23.08.2025 - 16:22