Chuyển đổi chuỗi thành số
Các parseInt()
hàm phân tích một đối số chuỗi và trả về một số nguyên của cơ số đã chỉ định (cơ số trong các hệ thống số toán học).
parseInt(string, radix);
Thông số
string
Giá trị để phân tích cú pháp. Nếu string
đối số không phải là một chuỗi, sau đó nó được chuyển đổi thành một chuỗi (sử dụng ToString
thao tác trừu tượng). Khoảng trắng ở đầu trong đối số chuỗi bị bỏ qua.’= radix Một số nguyên từ 2 đến 36 đại diện cho cơ số (cơ số trong các hệ thống số toán học) của chuỗi được đề cập ở trên. chỉ định 10
cho hệ thống chữ số thập phân thường được con người sử dụng. Luôn chỉ định tham số này để loại bỏ sự nhầm lẫn của người đọc và để đảm bảo hành vi có thể dự đoán được. Các triển khai khác nhau tạo ra các kết quả khác nhau khi cơ số không được chỉ định, thường đặt giá trị mặc định là 10. Giá trị trả về Một số nguyên được phân tích cú pháp từ chuỗi đã cho. Nếu không thể chuyển đổi ký tự đầu tiên thành số, NaN
Được trả lại.
Sự miêu tả
Các parseInt
hàm chuyển đổi đối số đầu tiên của nó thành một chuỗi, phân tích cú pháp và trả về một số nguyên hoặc NaN
. Nếu không NaN
, giá trị trả về sẽ là số nguyên là đối số đầu tiên được lấy làm số trong cơ số (cơ số) đã chỉ định. Ví dụ: cơ số 10 biểu thị chuyển đổi từ số thập phân, 8 bát phân, 16 thập lục phân, v.v. Đối với radices trên 10
các chữ cái trong bảng chữ cái biểu thị các chữ số lớn hơn 9. Ví dụ: đối với các số thập lục phân (cơ số 16),A
xuyên qua F
Được sử dụng.
Nếu parseInt
gặp một ký tự không phải là một số trong cơ số đã chỉ định, nó sẽ bỏ qua nó và tất cả các ký tự tiếp theo và trả về giá trị số nguyên được phân tích cú pháp cho đến thời điểm đó. parseInt
cắt ngắn số thành giá trị số nguyên. Không gian hàng đầu và dấu được cho phép.
Bởi vì một số số bao gồm e
ký tự trong biểu diễn chuỗi của chúng (ví dụ: 6.022e23
), sử dụng parseInt
để cắt bớt các giá trị số sẽ tạo ra kết quả không mong muốn khi được sử dụng trên các số rất lớn hoặc rất nhỏ. parseInt
không nên được sử dụng như một sự thay thế cho Math.floor()
.
Nếu cơ số là undefined
hoặc 0 (hoặc vắng mặt), JavaScript giả định như sau:
- Nếu đầu vào
string
bắt đầu bằng “0x” hoặc “0X”, cơ số là 16 (thập lục phân) và phần còn lại của chuỗi được phân tích cú pháp. - Nếu đầu vào
string
bắt đầu bằng “0”, cơ số là tám (bát phân) hoặc 10 (thập phân). Chính xác cơ số nào được chọn phụ thuộc vào việc triển khai. ECMAScript 5 chỉ định rằng 10 (thập phân) được sử dụng, nhưng không phải tất cả các trình duyệt đều hỗ trợ điều này. Vì lý do này, luôn chỉ định một cơ số khi sử dụng parseInt. - Nếu đầu vào
string
bắt đầu bằng bất kỳ giá trị nào khác, cơ số là 10 (thập phân). - Nếu không thể chuyển đổi ký tự đầu tiên thành số, thì parseInt sẽ trả về NaN.
Đối với mục đích số học, giá trị NaN không phải là một số trong bất kỳ cơ số nào. Bạn có thể gọi hàm isNaN để xác định xem kết quả của parseInt có phải là NaN hay không. Nếu NaN được chuyển sang các phép toán số học, kết quả của phép toán cũng sẽ là NaN.
Để chuyển đổi số thành chuỗi ký tự trong một cơ số cụ thể, hãy sử dụng intValue.toString(radix).
ví dụ
sử dụng parseInt
Các ví dụ sau đều trả về 15
:
parseInt(' 0xF', 16);
parseInt(' F', 16);
parseInt('17', 8);
parseInt(021, 8);
parseInt('015', 10); // parseInt(015, 10); will return 15
parseInt(15.99, 10);
parseInt('15,123', 10);
parseInt('FXX123', 16);
parseInt('1111', 2);
parseInt('15 * 3', 10);
parseInt('15e2', 10);
parseInt('15px', 10);
parseInt('12', 13);
Các ví dụ sau đều trả về NaN
:
parseInt('Hello', 8); // Not a number at all
parseInt('546', 2); // Digits are not valid for binary representations
Các ví dụ sau đều trả về -15
:
parseInt('-F', 16);
parseInt('-0F', 16);
parseInt('-0XF', 16);
parseInt(-15.1, 10)
parseInt(' -17', 8);
parseInt(' -15', 10);
parseInt('-1111', 2);
parseInt('-15e1', 10);
parseInt('-12', 13);
Các ví dụ sau đều trả về 4
:
parseInt(4.7, 10);
parseInt(4.7 * 1e22, 10); // Very large number becomes 4
parseInt(0.00000000000434, 10); // Very small number becomes 4
Ví dụ sau trả về 224
:
parseInt('0e0', 16);
Thêm thông tin:
parseInt trên MDN
- parseInt() và parseFloat() cố gắng chuyển đổi chuỗi thành số nếu có thể. Ví dụ,
var x = parseInt("100"); // x = 100
- Number() sẽ chuyển đổi thành một số mà giá trị có thể được biểu thị bằng. Điều này bao gồm các ngày thành số mili giây kể từ nửa đêm ngày 1 tháng 1 năm 1970 theo giờ UTC, các giá trị boolean thành 1 hoặc 0 và các giá trị không thể chuyển đổi thành số có thể nhận dạng được sẽ trở thành NaN. Đó là viết tắt của Not a Number và về mặt kỹ thuật cũng là một con số!