Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Z trybu szestastkowego na liczby naturalne
Forum PHP.pl > Forum > Przedszkole
Siper
Od niedawna skrypt zamiast pokazywać normalne cyfry, "wypluwa" je w trybie szestastkowym

  1. list($steam, $id, $id2) = explode(":", $_GET['sid']);
  2.  
  3. $steam_id64 = $id2 * 2 + $id + 76561197960265728;
  4.  


Zakładając, że $_GET['sid'] to STEAM_0:0:19483090, $steam_id64 powinno wynosic 76561197999231908, a zamiast tego pokazuje 7.65611979992E+16. Co jest tym spowodowane? Zaznaczam że to sie dzieje od niedawna, wcześciej działało bez problemu.
vermis
to nie jest tryb szesnastkowy to jest po prostu:
7.65611979992*10^16
czyli nadal liczba w systemie dziesiętnym.
tehaha
to jest notacja naukowa i mysql zapisuje tak bardzo duże liczby, o ile pamiętam to chyba funkcją number_format() można to wyświetlić w normalnej formie http://php.net/manual/en/function.number-format.php
thek
To jest tak zwana "notacja naukowa". Przy takiej notacji niestety tracisz dokładność najczęściej. Staraj się zmienić wielkość liczb bo inaczej będą dane mniej dokładne, bo będą wyskakiwały poza zakres.
Siper
Niestety, ale zmniejszenie ilości liczb jest niemożliwe, skrypt pobiera dane ze Steam (taki system gier biggrin.gif ) i jeżeli bedzie inna to po prostu dane będą błędne
Pawel_W
Cytat(Siper @ 7.06.2010, 23:38:38 ) *
Niestety, ale zmniejszenie ilości liczb jest niemożliwe, skrypt pobiera dane ze Steam (taki system gier biggrin.gif ) i jeżeli bedzie inna to po prostu dane będą błędne

ale zrozum, dla komputera nie ma różnicy w jakim formacie jest zapisana liczba, 10^2 = 100, wartość to wartość...

a jak już koniecznie chcesz, to do wyświetlania możesz użyć:
  1. echo rtrim(sprintf("%f", 7.65611979992E+16),"0")
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.