Co właściwie oznacza radix? Dlaczego tego potrzebujemy?
parseInt(10, radixValue);
Co właściwie oznacza radix? Dlaczego tego potrzebujemy?
parseInt(10, radixValue);
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);
parseInt('0101')
teraz wraca 101
. 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ówne parseInt(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
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 8
Na 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
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 ):
Jeśli parametr radix zostanie pominięty, JavaScript zakłada, co następuje:
Jeśli łańcuch zaczyna się od „0x”, podstawą jest 16 (szesnastkowo). Jeśli ciąg zaczyna się od „0”, podstawą jest 8 (ósemkowa). Ta funkcja jest przestarzała Jeśli ciąg znaków zaczyna się od innej wartości, podstawą jest 10 (dziesiętnie)
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 ()
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.
Parametr radix służy do określenia, który system liczbowy ma zostać użyty, na przykład podstawa 16 (szesnastkowa) wskazuje, że liczba w ciągu powinna być analizowana od liczby szesnastkowej do liczby dziesiętnej.
Jeśli parametr radix zostanie pominięty, JavaScript zakłada, co następuje:
Jeśli ciąg zaczyna się od „0x”, podstawa to 16 (szesnastkowo)
Jeśli ciąg zaczyna się od „0”, podstawą jest 8 (ósemkowa). Ta funkcja jest przestarzała
Jeśli ciąg zaczyna się od innej wartości, podstawa wynosi 10 (dziesiętnie)
Źródło W3Schools
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ą od 2
i 36
.
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()
że 10011
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.