Co właściwie oznacza radix? Dlaczego tego potrzebujemy?
parseInt(10, radixValue);
javascript
John Cooper
źródło
źródło
Odpowiedzi:
Nie zawsze możesz chcieć przeanalizować liczbę całkowitą do liczby o podstawie 10, więc podanie podstawy umożliwia określenie innych systemów liczbowych.
Podstawa to liczba wartości dla jednej cyfry. Szesnastkowy to 16. ósemkowy to 8, dwójkowy to 2 i tak dalej ...
W
parseInt()
funkcji jest kilka rzeczy, które możesz zrobić, aby wskazać podstawę bez jej podawania. Mogą one również działać przeciwko tobie, jeśli użytkownik wprowadza ciąg, który pasuje do jednej z reguł, ale nie ma wyraźnego zamiaru. Na przykład:// Numbers with a leading 0 used a radix of 8 (octal) before ECMAScript 5. // These days, browsers will treat '0101' as decimal. var result = parseInt('0101'); // Numbers that start with 0x use a radix of 16 (hexidecimal) var result = parseInt('0x0101'); // Numbers starting with anything else assumes a radix of 10 var result = parseInt('101'); // Or you can specify the radix, in this case 2 (binary) var result = parseInt('0101', 2);
źródło
parseInt('0101')
teraz wraca101
. Jednak różne przeglądarki mogą zachowywać się inaczej. Zawsze uwzględniaj podstawę, aby uzyskać wiarygodne wyniki.parseInt(x, 0)
z jakiegoś powodu, którego teraz nie pamiętam .. czy to jest równeparseInt(x, 10)
zastanawiam się teraz ...Ponieważ jeśli masz liczbę łańcuchową, taką jak
0700
i chcesz, aby wynik był liczbą całkowitą700
, musisz poinformowaćparseInt()
, że jest to liczba dziesiętna, a nie ósemkowa.console.log(parseInt("0700")); // 448 // I really wanted decimal (base 10) console.log(parseInt("0700", 10)); // 700 // What is this? Binary, Decimal, Octal? console.log(parseInt("0110")); // 72 // as binary console.log(parseInt("0110", 2)); // 6
źródło
0o
zamiast0
Radix jest podstawą systemu numeracji. Istnieje nieskończona liczba systemów numerycznych, ale te, które większość ludzi zna, to podstawa 10 (dziesiętna) i podstawa 2 (binarna).
Wartości liczbowe mogą być różnie interpretowane w różnych bazach. Na przykład liczba 10 w systemie dwójkowym może być reprezentowana jako 2 w systemie dziesiętnym.
W przypadku
parseInt()
, podstawa umożliwia określenie używanej podstawy. Domyślnie używana jest podstawa 10.Jednak podstawa powinna być zawsze określona, nawet w przypadku używania podstawy 10. Rozważmy przypadek
parseInt("010")
// Zwraca 8Na pierwszy rzut oka możesz oczekiwać, że instrukcja zwróci 10. Wyraźne użycie podstawy pomoże uniknąć nieporozumień:
parseInt("010", 10)
// Zwraca: 10źródło
Podstawa to numer podstawowy systemu liczbowego: http://en.wikipedia.org/wiki/Radix
Zwykle wystarczy określić podstawę, jeśli chcesz, aby była inna niż 10. Dokładniej (z http://www.w3schools.com/jsref/jsref_parseInt.asp ):
źródło
Dodam tylko dodatkowe informacje, które jasno odpowiadają na pytanie:
Jeśli podstawa jest niezdefiniowana lub 0 (lub nieobecna), JavaScript zakłada, że:
Źródło: MDN parseInt ()
źródło
To tylko moja opinia, ale pomysł, że „musimy użyć Radix” szybko się dezaktualizuje. Problem naprawdę pojawił się jakiś czas temu, ponieważ ludzie spoza świata IT zwykle nie używają innych zapisów liczbowych niż dziesiętne i dość często podają liczby dziesiętne uzupełnione zerami, takie jak „010”. Ale ponieważ liczby ósemkowe ECMAScript 6 w JS są poprzedzone przedrostkiem „0o”, a nie tylko „0”, jak to było w ECMAScript 5 i 3. Więc jeśli nie kierujesz reklamy na rodzinę IE (to nie jest teraz rzadka sytuacja) możesz pominąć radix bezpiecznie.
źródło
Źródło W3Schools
źródło
Co to jest radix w paseInt ()?
parseInt()
Funkcja analizuje ciąg i zwraca liczbę całkowitą. Jako podstawa przyjmuje drugi argument , który określa podstawę liczby w ciągu . Podstawa może być liczbą całkowitą od2
i36
.Wywołanie funkcji wygląda następująco (Składnia):
parseInt(string, radix);
Kilka przykładów wyjaśniających pojęcie radix
Przykład 1:
var a = parseInt("11", 2);
Radix zmienna mówi, że „11” jest w systemie binarnym lub podstawy 2 . Dlatego ten przykład konwertuje ciąg „11” na liczbę całkowitą 3.
Przykład 2:
var a = parseInt("10011", 16);
Tutaj podstawa mówi,
parseInt()
że10011
jest liczbą szesnastkową, a zatem w liczbie całkowitej zostanie przekonwertowana na65553
Krótko mówiąc, argument radix mówi,
parseInt()
że łańcuch przekazany jako pierwszy parametr pochodzi z określonego systemu (binarny, szesnastkowy itp.) I musi zostać przekonwertowany na liczbę całkowitą jako produkt końcowy.źródło