Bài học theo mô-đun (3/4)
Số và Toán
Trong JavaScript chỉ có một loại số: number. Cả hai số nguyên
và số thập phân (dấu chấm động) sống trong đó. Không tách biệt int / float
như trong các ngôn ngữ khác.
typeof 42; // 'number'
typeof 3.14; // 'number'
typeof -0.001; // 'number'
typeof Infinity; // 'number' ← Infinity is a special number
typeof NaN; // 'number' ← even "Not a Number" is a number (!)Đối tượng Math toàn cầu
Math không phải là một hàm: nó là một đối tượng có các phương thức hữu ích và
hằng số. Bạn không khởi tạo nó, bạn sử dụng nó trực tiếp:
Math.min(3, 1, 7); // 1
Math.max(3, 1, 7); // 7
Math.abs(-5); // 5
Math.round(4.5); // 5
Math.floor(4.9); // 4 (always rounds down)
Math.ceil(4.1); // 5 (always rounds up)
Math.sqrt(16); // 4
Math.pow(2, 10); // 1024 (equivalent to 2 ** 10)
Math.PI; // 3.141592653589793Số ngẫu nhiên
Math.random() trả về số thập phân giữa 0 (được bao gồm) và 1 (được loại trừ).
Để lấy một số nguyên trong một phạm vi, bạn sử dụng một công thức nhỏ:
// Random integer between 0 and 9
Math.floor(Math.random() * 10);
// Random integer between 1 and 6 (a six-sided die)
Math.floor(Math.random() * 6) + 1;Nỗi đau của số thập phân (dấu phẩy động)
JS sử dụng biểu diễn IEEE-754 64-bit, được chia sẻ với hầu hết tất cả ngôn ngữ. Đây là cách biểu diễn nhị phân, vì vậy một số số thập phân không thể được được thể hiện chính xác:
0.1 + 0.2; // 0.30000000000000004 (!)
0.1 + 0.2 === 0.3; // falseGiải pháp tiêu chuẩn: làm tròn với toFixed(n) (trả về chuỗi) hoặc
sử dụng số nguyên tính bằng xu/phần nghìn khi làm việc với tiền:
(0.1 + 0.2).toFixed(2); // '0.30' (string)
Number((0.1 + 0.2).toFixed(2)); // 0.3 (number)Hãy thử nó
Tính diện tích hình tròn có bán kính `r = 5` được làm tròn đến hai chữ số thập phân, dưới dạng `số`. Đối với `r=5` 78,54 được mong đợi.
Hiển thị gợi ý
Math.PI cho số pi, ** cho phép lũy thừa; .toFixed(2) để làm tròn, Number(...) để chuyển đổi về số.
Giải pháp khả dụng sau 3 lần thử
Xem lại bài tập
Cho ba số 12, 7, 23, biểu thức cuối cùng trả về hiệu giữa giá trị lớn nhất và giá trị nhỏ nhất (tức là 16).
Hiển thị gợi ý
Math.max và Math.min chấp nhận nhiều đối số được phân tách bằng dấu phẩy.
Giải pháp khả dụng sau 3 lần thử