Autor Zpráva
Fusion
Profil *
Zdravím,

Pracuju v AS2, chtěl bych se zeptat na nasledovní patálii:

promenna_id = new Number("000000000210468210");
trace(promenna_id);

v takovýmhle případě trace vyhodí číslo 210468210, což je fajn. Když ale první číslo změním s nuly na jiné, napr jedničku, potíže se začnou...

transaction_id = new Number("100000000210468210");
trace(transaction_id);

trace v druhým případe vyhodí nasledovní hodnotu: 1.00000000210468e+17 ... což absolutne netuším proč, ani co to mohlo zpúsobit.. vypadá to jako kdyby byl problém s tak dlouhým číslem, nebo co.. Prosím poraďte někdo. Hlavně mi tam vadí tečka za prvním číslem, která tam nesmí být, a také e+17 které se do toho čísla vmísilo.
Alphard
Profil
Rozsahy čísel v AS neznám (klasický integer?), ale float vám nic neříká? To je ta tečka a e+17.
Darker
Profil
Fusion:
Hlavně mi tam vadí tečka za prvním číslem, která tam nesmí být, a také e+17 které se do toho čísla vmísilo.
To je matematický formát čísla. Pokud do vědecké kalkulačky zadáš stejné číslo dostaneš stejný výsledek.
1.005e+3 = 1005
Fusion
Profil *
No popravdě nejsem ňákej machr ve flashi a programování vúbec, takže mi to bohužel nic neříká, ale usuzuju z toho článku že to vyjařuje jakousi exponencionální hodnotu, která skřesá číslo aby bylo "opticky" menší? Anyway.. není možný nastavit aby takovýhle kouzla flash nedělal?


prostě potřebuju aby mi flash pracoval s přesne daným číslem, a také aby ho tak zobrazoval.
Johnik
Profil
Fusion:
Problém je v rozsahu typu Number, jak již psal Alphard.

Pokud s tím číslem nemáš v plánu pracovat jako s číslem (odčítat, násobit, ...), tak to můžeš uložit jako String, pak to zůstane pořád stejné.

Edit:
ActionScript 2 tohle číslo neumí vypsat v původní podobě a není na to žádný workaround. Takže stejně doporučuju přejít na AS3, kde to není problém a případně můžeš objekt Number vypisovat metodou toFixed(0), která číslo vrátí přesně jak potřebuješ.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0