Chuyển đến nội dung chính
Mô-đun 2 · Bài học 3 trong tổng số 47/32 trong khóa học~10 min
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.

JS
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:

JS
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.141592653589793

Số 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ỏ:

JS
// 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:

JS
0.1 + 0.2; // 0.30000000000000004 (!)
0.1 + 0.2 === 0.3; // false

Giả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:

JS
(0.1 + 0.2).toFixed(2); // '0.30' (string)
Number((0.1 + 0.2).toFixed(2)); // 0.3 (number)

Hãy thử nó

tập thể dục#js.m2.l3.e1
Nỗ lực: 0Đang tải…

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.

Đang tải trình chỉnh sửa…
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

tập thể dục#js.m2.l3.e2
Nỗ lực: 0Đang tải…

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).

Đang tải trình chỉnh sửa…
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ử