Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Konwersja stringa do float
Forum PHP.pl > Forum > PHP
duch4ever
Witam, sam nie wiem jaki powinien być temat.
Mam kod EAN13, czyli 13 cyforwy kod produktu w takiej formie "5.90115742179E+12" (tak go zwraca pewien program).
Jak to zamienić na porawny kod czyli w tym wypdaku "5901157421791" ?
maly_swd
Musze Cie zmartwic poniewaz 5.90115742179E+12 to nie 5901157421791 a 5901157421790

Wiec albo zmien program, ktory Ci zwraca taki EAN13 bo taka liczba nie jest poprawnym kodem EAN.


Taki zapis powstaje 5.90115742179E+12 gdy jest przekroczenie dozwolonego zakresu, i wtedy jest on zaokraglany aby uzyskac przyblizony wynik

5.90115742179E+12 to dokladnie 5.90115742179*10^12

Ps. Co to za program Ci taka wartosc zwraca?
Xorlgen
Jeżeli zwraca Ci to kompilator php, to sprawdź config, masz tam możliwość zmiany maksymalnej długośći liczby... Nie mówił o tym przedmówca, więc dorzucam swoje 3 grosze : >. Pozdro.
Puszy
Również pracuję z EANami i taki format (postać wykładnicza) zaobserwowałem tylko w Excelu. Jeżeli dane wyciągasz z pliku .xlsx albo .csv i jesteś w stanie go edytować ręcznie to obrób go w Excelu. Jeżeli taką liczbę zwraca Ci PHP, JS czy też Java itd. to bardzo dziwne.
maly_swd
Z tego co pamietam (moge sie mylic), to jesi system jest 32bit to liczby w PHP sa chyba 32bitowe.

Excel moze faktycznie pokazywc takie liczby, wiec mozna kolumne zamienic na TEXTowa i powinno pokazywac dobrze (o ile dane w pliku zrodlowym sa poprawne).


Puszy
Zrobiłem mały test PHP

Windows XP SP3 32bit
PHP 5.3.8

  1. <?php
  2. $f = 1234567891234;
  3. ?>


zwraca mi:

  1. float(1234567891234)


Także PHP nie ma problemu z 13 cyframi w liczbie, fajnie by było gdyby autor postu podał źródło danych, jeżeli może.

edit:

Gorzej gdy EAN zaczyna się od zera.

  1. <?php
  2. $f = 0123456789123;
  3. ?>


zwraca:

  1. int(342391)
duch4ever
Mam cennik hurtowni gdzie jest EAN13 i kiedy chcę z niego wyciągnąć dane zwraca mi właśnie takie coś, testowałem w PHP na http://code.google.com/p/php-excel-reader/.
Można coś z tym zrobić?
redeemer
Cytat(Puszy @ 4.06.2012, 13:00:33 ) *
Gorzej gdy EAN zaczyna się od zera.
Gdy liczba zaczyna się od zera, jest traktowana jako liczba w systemie ósemkowym (http://www.php.net/manual/pl/language.types.integer.php).
duch4ever
Te liczby nie zaczynają się od zera, korzystam z systemu x64 (windows 7). Można to jakoś przekonwertować?
maly_swd
http://forum.php.pl/index.php?showtopic=19...st&p=967350 drugie zdanie
duch4ever
Niestety zmiany tupu na TEXT w Excellu nie pomogła, mimo że w dokumencie jest ok po sparsowaniu już nie.
Sporo się nakombinowałem i dalej nie wiem dlaczego tak się dzieje.
Dzięki wszystkim za pomoc.
maly_swd
Jak mozesz to daj kawalek wygenerowanego pliku EXCELA z tym EAN (ale nie otwieraj go sam w excelu i nie modyfikuj). To moze da sie jakos Ci pomoc
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.