Cơ số thực sự có nghĩa là gì? Tại sao chúng ta cần nó?
parseInt(10, radixValue);
Cơ số thực sự có nghĩa là gì? Tại sao chúng ta cần nó?
parseInt(10, radixValue);
Câu trả lời:
Không phải lúc nào bạn cũng có thể muốn phân tích cú pháp số nguyên thành số cơ số 10, vì vậy việc cung cấp cơ số cho phép bạn chỉ định các hệ thống số khác.
Cơ số là số giá trị của một chữ số. Hệ thập phân sẽ là 16. Bát phân sẽ là 8, nhị phân sẽ là 2, v.v.
Trong parseInt()
hàm, có một số điều bạn có thể làm để gợi ý về cơ số mà không cần cung cấp. Những điều này cũng có thể chống lại bạn nếu người dùng đang nhập một chuỗi khớp với một trong các quy tắc nhưng không có ý nghĩa rõ ràng. Ví dụ:
// 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')
bây giờ trở lại 101
. Các trình duyệt khác nhau có thể có các hành vi khác nhau. Luôn bao gồm cơ số để có kết quả đáng tin cậy.
parseInt(x, 0)
vì một số lý do mà tôi không thể nhớ ngay bây giờ .. điều này có bằng với parseInt(x, 10)
tôi bây giờ đang tự hỏi ...
Bởi vì nếu bạn có một số chuỗi như 0700
và muốn đầu ra là số nguyên, 700
bạn cần thông báo parseInt()
rằng nó là số thập phân chứ không phải là số bát phân.
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
Cơ số là cơ sở của một hệ thống số. Có vô số hệ thống số nhưng những hệ thống mà hầu hết mọi người quen thuộc là hệ cơ số 10 (thập phân) và cơ số 2 (nhị phân).
Các giá trị số có thể được diễn giải khác nhau theo các cơ sở khác nhau. Ví dụ: số 10 trong hệ nhị phân có thể được biểu diễn dưới dạng số 2 trong hệ thập phân.
Trong trường hợp của parseInt()
, cơ số cho phép bạn chỉ định cơ số sẽ được sử dụng. Theo mặc định, cơ số 10 được sử dụng.
Tuy nhiên, cơ số phải luôn được chỉ định, ngay cả khi sử dụng cơ số 10. Hãy xem xét trường hợp
parseInt("010")
// Trả về 8
Thoạt nhìn, bạn có thể mong đợi câu lệnh trả về 10. Việc sử dụng rõ ràng cơ số sẽ giúp tránh nhầm lẫn:
parseInt("010", 10)
// Trả về: 10
Cơ số là số cơ sở của hệ thống số: http://en.wikipedia.org/wiki/Radix
Thông thường, bạn chỉ cần chỉ định cơ số nếu bạn muốn nó khác 10. Cụ thể hơn (từ http://www.w3schools.com/jsref/jsref_parseInt.asp ):
Nếu tham số cơ số bị bỏ qua, JavaScript sẽ giả định như sau:
Nếu chuỗi bắt đầu bằng "0x", cơ số là 16 (hệ thập lục phân) Nếu chuỗi bắt đầu bằng "0", cơ số là 8 (bát phân). Tính năng này không được dùng nữa Nếu chuỗi bắt đầu bằng bất kỳ giá trị nào khác, cơ số là 10 (thập phân)
Chỉ cần thêm một số thông tin bổ sung trả lời rõ ràng câu hỏi:
Nếu cơ số là không xác định hoặc 0 (hoặc không có), JavaScript sẽ giả định như sau:
Nguồn: MDN parseInt ()
Đó chỉ là ý kiến của tôi nhưng ý tưởng rằng "chúng ta cần sử dụng cơ số" nhanh chóng trở nên lỗi thời. Vấn đề thực sự đã xảy ra một thời gian trước đây bởi vì những người bên ngoài thế giới CNTT thường không sử dụng các ký hiệu số khác với số thập phân và thường cung cấp các số thập phân không có đệm như "010". Nhưng vì ECMAScript 6 số bát phân trong JS có tiền tố là "0o" chứ không chỉ là "0" như trong ECMAScript 5 và 3. Vì vậy, nếu bạn không nhắm mục tiêu họ IE (đó là tình huống không hiếm bây giờ), bạn có thể bỏ qua cơ số an toàn.
Tham số cơ số được sử dụng để chỉ định hệ thống số nào sẽ được sử dụng, ví dụ: cơ số 16 (hệ thập lục phân) cho biết rằng số trong chuỗi phải được phân tích cú pháp từ số thập lục phân thành số thập phân.
Nếu tham số cơ số bị bỏ qua, JavaScript sẽ giả định như sau:
Nếu chuỗi bắt đầu bằng "0x", cơ số là 16 (hệ thập lục phân)
Nếu chuỗi bắt đầu bằng "0", cơ số là 8 (bát phân). Tính năng này không được dùng nữa
Nếu chuỗi bắt đầu bằng bất kỳ giá trị nào khác, cơ số là 10 (thập phân)
Nguồn W3Schools
Cơ số trong paseInt () là gì?
Các parseInt()
chức năng phân tích một chuỗi và trả về một số nguyên. Nó cần một đối số thứ hai cho cơ số , chỉ định cơ số của số trong chuỗi . Cơ số có thể là một số nguyên giữa 2
và 36
.
Lệnh gọi hàm trông giống như (Cú pháp):
parseInt(string, radix);
Một số ví dụ để làm rõ khái niệm cơ số
Ví dụ 1:
var a = parseInt("11", 2);
Biến cơ số nói rằng "11" nằm trong hệ nhị phân, hoặc cơ số 2 . Do đó, ví dụ này chuyển đổi chuỗi "11" thành số nguyên 3.
Ví dụ 2:
var a = parseInt("10011", 16);
Ở đây, cơ số cho biết parseInt()
đó 10011
là số thập lục phân và do đó ở dạng số nguyên, nó được chuyển đổi thành65553
Về cơ bản, ngắn gọn là câu chuyện ngắn, đối số cơ số cho biết parseInt()
rằng chuỗi được truyền dưới dạng tham số 1 là của một hệ thống cụ thể (nhị phân, thập lục phân, v.v.) và nó cần được chuyển đổi thành một số nguyên dưới dạng sản phẩm cuối cùng.