Số JavaScript
JavaScript chỉ có một loại số. Số có thể được viết với hoặc không có số thập phân.
Thí 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ũ):
Thí dụ
let x = 123e5; // 12300000
let y = 123e-5; // 0.00123
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 định nghĩa 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 kép, tuân theo tiêu chuẩn IEEE 754 quốc tế.
Định dạng này lưu trữ các số trong 64 bit, trong đó số (phân số) được lưu trữ trong các bit 0 đến 51, số mũ ở các bit 52 đến 62 và dấu ở bit 63:
Giá trị (còn gọi là Phân số / Mantissa) | Số mũ | Ra hiệu |
---|---|---|
52 bit (0 - 51) | 11 bit (52 - 62) | 1 bit (63) |
Độ chính xác số nguyên
Số nguyên (số không có dấu chấm hoặc số mũ) chính xác đến 15 chữ số.
Thí dụ
let x = 999999999999999; // x will be 999999999999999
let y = 9999999999999999; // y will be 10000000000000000
Số số thập phân tối đa là 17.
Độ chính xác nổi
Số học dấu phẩy động không phải lúc nào cũng chính xác 100%:
let x = 0.2 + 0.1;
Để giải quyết vấn đề trên, nó sẽ giúp nhân và chia:
let x = (0.2 * 10 + 0.1 * 10) / 10;
Thêm số và chuỗi
CẢNH BÁO !!
JavaScript sử dụng toán tử + cho cả phép cộng và phép nối.
Các con số được thêm vào. Các chuỗi được nối với nhau.
Nếu bạn thêm hai số, kết quả sẽ là một số:
Thí dụ
let x = 10;
let y = 20;
let z = x + y;
Nếu bạn thêm hai chuỗi, kết quả sẽ là một chuỗi nối:
Thí dụ
let x = "10";
let y = "20";
let z = x + y;
Nếu bạn thêm một số và một chuỗi, kết quả sẽ là một chuỗi nối:
Thí dụ
let x = 10;
let y = "20";
let z = x + y;
Nếu bạn thêm một chuỗi và một số, kết quả sẽ là một chuỗi nối:
Thí dụ
let x = "10";
let y = 20;
let z = x + y;
Một sai lầm phổ biến là mong đợi kết quả này là 30:
Thí dụ
let x = 10;
let y = 20;
let z = "The result is: " + x + y;
Một sai lầm phổ biến là mong đợi kết quả này là 102030:
Thí dụ
let x = 10;
let y = 20;
let z = "30";
let result = x + y + z;
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 toán 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ụ cuối cùng, 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 cho JavaScript chỉ ra rằng một số không phải là một 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 là Số):
Thí dụ
let x = 100 / "Apple";
Tuy nhiên, nếu chuỗi chứa giá trị số, kết quả sẽ là một số:
Thí dụ
let x = 100 / "10";
Bạn có thể sử dụng hàm JavaScript toàn cục isNaN()
để tìm hiểu xem giá trị có phải là số không:
Thí dụ
let x = 100 / "Apple";
isNaN(x);
Hãy coi chừng NaN
. Nếu bạn sử dụng NaN
trong một phép toán, kết quả cũng sẽ là NaN
:
Thí dụ
let x = NaN;
let y = 5;
let z = x + y;
Hoặc kết quả có thể là một nối như NaN5:
Thí dụ
let x = NaN;
let y = "5";
let z = x + y;
NaN
là một số: typeof NaN
trả về number
:
Thí dụ
typeof NaN;
vô cực
Infinity
(hoặc -Infinity
) là giá trị JavaScript sẽ trả về nếu bạn tính một số bên ngoài số lớn nhất có thể.
Thí dụ
let myNumber = 2;
// Execute until Infinity
while (myNumber != Infinity) {
myNumber = myNumber * myNumber;
}
Phép chia cho 0 (không) cũng tạo ra Infinity
:
Thí dụ
let x = 2 / 0;
let y = -2 / 0;
Infinity
là một số: typeof Infinity
trả về number
.
Thí dụ
typeof Infinity;
Hệ thập lục phân
JavaScript diễn giải các hằng số dưới dạng hệ thập lục phân nếu chúng đứng trước 0x.
Thí dụ
let x = 0xFF;
Không bao giờ viết một số có số 0 đứng đầu (như 07).
Một số phiên bản JavaScript giải thích các số là số bát phân nếu chúng được viết bằng số 0 ở đầ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 toString()
phương pháp này để 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 . Hệ bát phân là cơ số 8 . Nhị phân là cơ số 2 .
Thí dụ
let myNumber = 32;
myNumber.toString(10);
myNumber.toString(32);
myNumber.toString(16);
myNumber.toString(8);
myNumber.toString(2);
JavaScript Numbers as Objects
Thông thường các số trong JavaScript là các giá trị nguyên thủy được tạo ra từ các ký tự:
let x = 123;
Nhưng 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);
Thí dụ
let x = 123;
let y = new Number(123);
Không tạo đối tượng Số.
Từ new
khóa 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 đợi:
Khi sử dụng ==
toán tử, x và y bằng nhau :
let x = 500;
let y = new Number(500);
Khi sử dụng ===
toán tử, x và y không bằng nhau .
let x = 500;
let y = new Number(500);
Lưu ý sự khác biệt giữa (x==y)
và (x===y)
.
(x == y)
đúng hay sai?
let x = new Number(500);
let y = new Number(500);
(x === y)
đúng hay sai?
let x = new Number(500);
let y = new Number(500);
Comparing two JavaScript objects always returns false.
Complete JavaScript Number Reference
For a complete Number reference, visit our:
Complete JavaScript Number Reference.
The reference contains descriptions and examples of all Number properties and methods.