Số JavaScript
JavaScript chỉ có một loại số. Số có thể được viết có hoặc không có số thập phân.
Ví dụ
let x = 3.14; // A number with decimals
let y = 3; // A number without decimals
Các số cực lớn hoặc cực nhỏ có thể được viết bằng ký hiệu khoa học (số mũ):
Số JavaScript luôn là dấu phẩy động 64 bit
Không giống như nhiều ngôn ngữ lập trình khác, JavaScript không xác định các loại số khác nhau, như số nguyên, ngắn, dài, dấu phẩy động, v.v.
Số JavaScript luôn được lưu trữ dưới dạng số dấu phẩy động có độ chính xác gấp đôi, tuân theo tiêu chuẩn quốc tế IEEE 754.
Định dạng này lưu trữ số ở dạng 64 bit, trong đó số (phân số) được lưu ở bit từ 0 đến 51, số mũ ở bit từ 52 đến 62 và dấu ở bit 63:
Giá trị (còn gọi là Phân số/Mantissa) | số mũ | Dấu hiệu |
---|---|---|
52 bit (0 - 51) | 11 bit (52 - 62) | 1 chút (63) |
Độ chính xác của số nguyên
Số nguyên (số không có dấu chấm hoặc ký hiệu số mũ) có độ chính xác lên đến 15 chữ số.
Ví dụ
let x = 999999999999999; // x will be 999999999999999
let y = 9999999999999999; // y will be 10000000000000000
Hãy tự mình thử »Số thập phân tối đa là 17.
Độ chính xác nổi
Để giải quyết vấn đề trên, nó giúp nhân và chia:
let x = (0.2 * 10 + 0.1 * 10) / 10;
Hãy tự mình thử » Thêm số và chuỗi
CẢNH BÁO !!
JavaScript sử dụng toán tử + cho cả phép cộng và nối.
Số được thêm vào. Các chuỗi được nối với nhau.
Nếu cộng hai số thì kết quả sẽ là một số:
Nếu bạn thêm hai chuỗi, kết quả sẽ là nối chuỗi:
Nếu bạn thêm một số và một chuỗi, kết quả sẽ là nối chuỗi:
Nếu bạn thêm một chuỗi và một số, kết quả sẽ là nối chuỗi:
Một sai lầm phổ biến là kỳ vọng kết quả này là 30:
Một lỗi phổ biến là mong đợi kết quả này là 102030:
Trình thông dịch JavaScript hoạt động từ trái sang phải.
10 + 20 đầu tiên được thêm vào vì x và y đều là số.
Khi đó 30 + "30" được nối vì z là một chuỗi.
Chuỗi số
Chuỗi JavaScript có thể có nội dung số:
let x = 100; // x is a number
let y = "100"; // y is a
string
JavaScript sẽ cố gắng chuyển đổi chuỗi thành số trong tất cả các phép tính số:
Điều này sẽ hoạt động:
let x = "100";
let y = "10";
let z = x / y;
Điều này cũng sẽ hoạt động:
let x = "100";
let y = "10";
let z = x * y;
Và điều này sẽ hoạt động:
let x = "100";
let y = "10";
let z = x - y;
Nhưng điều này sẽ không hoạt động:
let x = "100";
let y = "10";
let z = x + y;
Trong ví dụ trước, JavaScript sử dụng toán tử + để nối các chuỗi.
NaN - Không phải là số
NaN
là một từ dành riêng trong JavaScript cho biết một số không phải là số hợp pháp.
Cố gắng thực hiện số học với một chuỗi không phải là số sẽ dẫn đến NaN
(Không phải số):
Tuy nhiên, nếu chuỗi là số thì kết quả sẽ là số:
Bạn có thể sử dụng hàm JavaScript toàn cục isNaN()
để tìm hiểu xem một giá trị có phải là số hay không:
Hãy coi chừng NaN
. Nếu bạn sử dụng NaN
trong một phép toán thì kết quả cũng sẽ là NaN
:
Hoặc kết quả có thể là một phép nối như NaN5:
NaN
là một số: typeof NaN
trả về number
:
vô cực
Infinity
(hoặc -Infinity
) là giá trị mà JavaScript sẽ trả về nếu bạn tính một số nằm ngoài số lớn nhất có thể.
Ví dụ
let myNumber = 2;
// Execute until Infinity
while (myNumber != Infinity) {
myNumber = myNumber * myNumber;
}
Hãy tự mình thử » Chia cho 0 (không) cũng tạo ra Infinity
:
Infinity
là một số: typeof Infinity
trả về number
.
thập lục phân
JavaScript diễn giải các hằng số dưới dạng thập lục phân nếu chúng đứng trước 0x.
Không bao giờ viết số có số 0 đứng đầu (như 07).
Một số phiên bản JavaScript diễn giải các số dưới dạng bát phân nếu chúng được viết bằng số 0 đứng đầu.
Theo mặc định, JavaScript hiển thị các số dưới dạng số thập phân cơ số 10 .
Nhưng bạn có thể sử dụng phương thức toString()
để xuất các số từ cơ số 2 đến cơ số 36 .
Hệ thập lục phân là cơ số 16 . Số thập phân là cơ số 10 . Bát phân là cơ số 8 . Nhị phân là cơ số 2 .
Ví dụ
let myNumber = 32;
myNumber.toString(32);
myNumber.toString(16);
myNumber.toString(12);
myNumber.toString(10);
myNumber.toString(8);
myNumber.toString(2);
Hãy tự mình thử »Số JavaScript làm đối tượng
Thông thường các số JavaScript là các giá trị nguyên thủy được tạo từ các chữ:
let x = 123;
Nhưng các con số cũng có thể được định nghĩa là các đối tượng với từ khóa new
:
let y = new Number(123);
Không tạo đối tượng Number.
Từ khóa new
làm phức tạp mã và làm chậm tốc độ thực thi.
Đối tượng Số có thể tạo ra kết quả không mong muốn:
Khi sử dụng toán tử ===
, x và y không bằng nhau .
let x = 500;
let y = new Number(500);
Hãy tự mình thử » Lưu ý sự khác biệt giữa (x==y)
và (x===y)
.
So sánh hai đối tượng JavaScript luôn trả về false .
Tham chiếu số JavaScript hoàn chỉnh
Để có tài liệu tham khảo Số đầy đủ, hãy truy cập:
Tham chiếu số JavaScript hoàn chỉnh .
Tham chiếu chứa các mô tả và ví dụ về tất cả các thuộc tính và phương thức Number.