2011-02-08 6 views

Odpowiedz

17

Istnieje kilka sposobów, aby przekonwertować ciąg na liczbę, I prefer to use jednoargumentowych + operatora:

var number = +"08"; // 8 

Jest to odpowiednik pisania:

var number = Number("08"); // 8 

przeciwieństwie parseInt(), gdy przy użyciu + lub Number() żadna podstawa nie jest konieczna, ponieważ konwersja numeru wewnętrznego nie będzie analizować liczb ósemkowych. Jeśli chcesz parseInt() lub parseFloat() metod, to również dość prosta:

var number = parseInt("08", 10); // 8 

parseInt i parseFloat są mniej wiarygodne dane wprowadzone przez użytkownika, ponieważ nieprawidłowy literał numeryczny można uznać uratowania tych funkcji i powrócić nieoczekiwany rezultat. Rozważmy następujący:

parseInt("1,000"); // -> 1, not 1000 
+"1,000";   // -> NaN, easier to detect when there's a problem 

Extra Reading

+0

a co z numerem 010, a nie ciągiem? parseInt(), numer, +, nie działał –

+0

@Umair: '010' jest już liczbą. W "trybie swobodnym" lub starszych przeglądarkach, liczba będzie wynosić 8. W trybie ścisłym zostanie zgłoszony błąd składniowy (ale możesz użyć '0o10', jeśli * transpileujesz * z Babel lub używasz wyłącznie nowszych przeglądarek) –

+0

tak, twoje są tak, to jest już numer, chcę uzyskać dziesiętną wartość tej liczby lub usunąć wiodącą liczbę 0, jak mogę zrobić –

6

Użyj parseInt() z argumentem radix. To wyłącza automatyczne wykrywanie podstawy (wiodącej 0 -> ósemkowej, 0x -> Hex):

var number = parseInt('08', 10); 
// number is now 8 
+1

argument radix jest jeden i zawsze zapominam czasami. +1 – kjy112

3

można użyć parseInt(); z bazą 10 lub parseFloat(); do analizy zmiennoprzecinkowej

Powiązane problemy