wtorek, 22 grudnia 2009

Javascript - niespodzianka parseInt()

Niedawno udało mi się zrobić trudną do wykrycia na pierwszy rzut oka gafę... :). Łańcuchy "00", "01", "02" itd musiałem zmienić na wartości całkowite. Nie przeczuwając nadciągających komplikacji ot tak przekazałem łańcuchy do funkcji parseInt(). Niestety w praniu okazało się, że w przypadku braku jednoznacznie określonego systemu liczbowego funkcja stara się go sama określić na podstawie zawartości łańcucha, tzn dla 0x.. będziemy pracować w systemie szesnastkowym, a dla 0... w oktalnym. Wynik funkcji parseInt("08") to wcale nie oczekiwane 8, ale .. 0, identyczna sytuacja występuje w przypadku "09". Dwoma metodami rozwiązania 'problemu' jest przekazanie parseInt() podstawy systemu liczbowego jako drugi argument albo sięgnięcie po funkcję parseFloat(), która zawsze pracuje w systemie dziesiętnym.

Brak komentarzy:

Prześlij komentarz