RangeError: radix must be an integer
Ngoại lệ JavaScript "radix must be an integer at least 2 and no greater than 36"
xảy ra khi tham số radix tùy chọn của phương thức
Number.prototype.toString() hoặc
BigInt.prototype.toString() được chỉ định và không nằm trong khoảng từ 2
đến 36.
Thông báo
RangeError: toString() radix argument must be between 2 and 36 (V8-based & Safari) RangeError: radix must be an integer at least 2 and no greater than 36 (Firefox)
Loại lỗi
RangeError
Nguyên nhân?
Tham số radix tùy chọn của phương thức
Number.prototype.toString() hoặc
BigInt.prototype.toString() được chỉ định. Giá trị của nó phải là một
số nguyên (một số) từ 2 đến 36, chỉ định cơ số của hệ thống số sẽ được dùng
để biểu diễn các giá trị số. Ví dụ, số thập phân (cơ số 10) 169 được
biểu diễn trong hệ thập lục phân (cơ số 16) là A9.
Tại sao giá trị của tham số này bị giới hạn ở 36? Một radix lớn hơn 10 sử dụng các ký tự chữ cái làm chữ số; do đó, radix không thể lớn hơn 36, vì bảng chữ cái Latin (được sử dụng bởi tiếng Anh và nhiều ngôn ngữ khác) chỉ có 26 ký tự.
Các radix phổ biến nhất:
- 2 cho số nhị phân,
- 8 cho số bát phân,
- 10 cho số thập phân,
- 16 cho số thập lục phân.
Ví dụ
>Trường hợp không hợp lệ
(42).toString(0);
(42).toString(1);
(42).toString(37);
(42).toString(150);
// You cannot use a string like this for formatting:
(12071989).toString("MM-dd-yyyy");
Trường hợp hợp lệ
(42).toString(2); // "101010" (binary)
(13).toString(8); // "15" (octal)
(0x42).toString(10); // "66" (decimal)
(100000).toString(16); // "186a0" (hexadecimal)