3.1 Kiểu Number
Số trong JavaScript đóng vai trò quan trọng khi làm việc với dữ liệu và thực hiện các phép tính. Ngôn ngữ cung cấp vô số khả năng để làm việc với số, bao gồm các loại phép toán và phương thức tích hợp sẵn.
Trong JavaScript chỉ có một kiểu dữ liệu cho số - Number. Kiểu dữ liệu này đại diện cho cả số nguyên lẫn số thập phân. Thêm vào đó, bắt đầu từ năm 2020, kiểu BigInt đã được thêm vào để làm việc với các số nguyên rất lớn.
Ví dụ:
let integer = 42; // Số nguyên
let float = 3.14; // Số thập phân
let bigInt = 12345678901234567890n; // Số nguyên lớn
Các phép toán với số
Phép toán số học:
Phép toán | Cú pháp | Mô tả | Ví dụ | Kết quả |
---|---|---|---|---|
Phép cộng | a + b | Cộng hai số | 5 + 3 | 8 |
Phép trừ | a - b | Trừ một số khỏi số khác | 10 - 4 | 6 |
Phép nhân | a * b | Nhân hai số | 7 * 3 | 21 |
Phép chia | a / b | Chia một số cho số khác | 20 / 5 | 4 |
Số dư | a % b | Trả về số dư của phép chia | 10 % 3 | 1 |
Luỹ thừa | a ** b | Số mũ | 2 ** 3 | 8 |
Phép tăng và giảm
Phép toán | Cú pháp | Mô tả | Ví dụ | Kết quả |
---|---|---|---|---|
Phép tăng | ++a | Tăng giá trị lên một đơn vị (tiền tố) | let a = 5; ++a; |
6 |
Phép tăng | a++ | Tăng giá trị lên một đơn vị (hậu tố) | let a = 5; a++; |
5 (và sau đó 6) |
Phép giảm | --b | Giảm giá trị xuống một đơn vị (tiền tố) | let b = 5; --b; |
4 |
Phép giảm | b-- | Giảm giá trị xuống một đơn vị (hậu tố) | let b = 5; b--; |
5 (và sau đó 4) |
Các phép toán kết hợp
Phép toán | Cú pháp | Mô tả | Ví dụ | Kết quả |
---|---|---|---|---|
Cộng kết hợp | a += b | Cộng và gán kết quả | let x = 10; x += 5; |
15 |
Trừ kết hợp | a -= b | Trừ và gán kết quả | let x = 10; x -= 3; |
7 |
Nhân kết hợp | a *= b | Nhân và gán kết quả | let x = 10; x *= 2; |
20 |
Chia kết hợp | a /= b | Chia và gán kết quả | let x = 10; x /= 2; |
5 |
Số dư kết hợp | a %= b | Tìm số dư và gán kết quả | let x = 10; x %= 3; |
1 |
3.2 Phương thức tích hợp sẵn
Trong JavaScript, có một đối tượng tích hợp sẵn Math
để thực hiện các phép toán toán học khác nhau.
1. Math.round():
Làm tròn số đến số nguyên gần nhất.
let rounded = Math.round(4.6); // 5
2. Math.ceil():
Làm tròn số lên số nguyên gần nhất.
let ceil = Math.ceil(4.2); // 5
3. Math.floor():
Làm tròn số xuống số nguyên gần nhất.
let floor = Math.floor(4.8); // 4
4.Math.random():
Trả về số ngẫu nhiên trong khoảng từ 0 đến 1.
let random = Math.random();
5. Math.max() và Math.min():
Trả về giá trị lớn nhất và nhỏ nhất từ tập hợp các số.
let max = Math.max(1, 2, 3, 4); // 4
let min = Math.min(1, 2, 3, 4); // 1
6. Math.sqrt():
Trả về căn bậc hai của số.
let sqrt = Math.sqrt(16); // 4
7. Math.pow():
Trả về số, nâng lên số mũ nhất định.
let pow = Math.pow(2, 3); // 8
3.3 Phân tích chuỗi thành số
Hàm parseInt():
Chuyển đổi chuỗi thành số nguyên.
let int = parseInt('123'); // 123
Hàm parseFloat():
Chuyển đổi chuỗi thành số thập phân.
let float = parseFloat('3.14'); // 3.14
Hàm Number():
Chuyển đổi giá trị thành số.
let num = Number('42'); // 42
Kiểm tra giá trị
Hàm isNaN():
Kiểm tra xem giá trị có phải là NaN (Not-a-Number) không.
let isNotNumber = isNaN('hello'); // true
Hàm isFinite():
Kiểm tra xem giá trị có phải là số hữu hạn (không phải vô hạn) không.
let finite = isFinite(10); // true
let notFinite = isFinite(Infinity); // false
3.4 Đặc điểm số trong JavaScript
1. Giới hạn số
Trong JavaScript, số được biểu diễn ở định dạng số dấu phẩy động chính xác kép, điều này có một số giới hạn nhất định:
- Giá trị lớn nhất: Number.MAX_VALUE
- Giá trị nhỏ nhất: Number.MIN_VALUE
- Vô cực dương: Infinity
- Vô cực âm: -Infinity
- Không phải số (NaN): giá trị không phải là số
2. Độ chính xác của số
Việc làm việc với số thập phân có thể dẫn đến vấn đề về độ chính xác:
let sum = 0.1 + 0.2;
console.log(sum); // 0.30000000000000004
Chuyện này xảy ra trong tất cả các ngôn ngữ lập trình – JavaScript không phải ngoại lệ.
3. Số nguyên an toàn
Trong JavaScript, có khái niệm số nguyên "an toàn", những số có thể được biểu diễn chính xác dưới dạng số dấu phẩy động:
- Số nguyên an toàn tối đa:
Number.MAX_SAFE_INTEGER (253 - 1)
- Số nguyên an toàn tối thiểu:
Number.MIN_SAFE_INTEGER (-(253 - 1))
GO TO FULL VERSION