Lesson 01 — Số và trục số
Bộ công cụ tương tác: trục số, phân loại số theo ℕ/ℤ/ℚ/ℝ\ℚ, và demo sai số float trong máy tính.
1. Trục số tương tác
Click bất kỳ điểm nào trên trục để chọn A. Click tiếp để chọn B. Lần click thứ ba reset về A. Trục hiển thị từ −10 đến 10.
A = —
|A| = —
B = —
|B| = —
Khoảng cách |A − B| = —
Snap on: chọn số nguyên. Snap off: chọn số thực tới 1 chữ số thập phân.
2. Phân loại số
Hỗ trợ: số nguyên (
3, -7), số thập phân (0.5), phân số (22/7), căn (sqrt(2), sqrt(4)), hằng số (pi, e), tuần hoàn (0.333...).Một số tự nhiên cũng đồng thời là nguyên, hữu tỉ, thực — vì ℕ ⊂ ℤ ⊂ ℚ ⊂ ℝ. Mọi nhãn tô đậm bên dưới là tập nhỏ nhất chứa số đó.
| Tập | Ký hiệu | Ví dụ click thử |
|---|---|---|
| Tự nhiên | ℕ | |
| Nguyên | ℤ | |
| Hữu tỉ | ℚ | |
| Vô tỉ | ℝ\ℚ |
3. Demo sai số float — vì sao 0.1 + 0.2 ≠ 0.3?
Trong máy tính, float64 lưu số dưới dạng nhị phân với 52 bit định trị. 0.1₁₀ trong hệ 2 là chuỗi tuần hoàn vô hạn 0.000110011001100…₂, phải cắt sau 52 bit → lệch một chút. Khi cộng, sai số tích lũy.
Bấm các nút trên để xem demo. Mỗi thí nghiệm in cả phép `==` trực tiếp và `almostEqual` với epsilon.
Tự thử phép tính
Cách so sánh đúng: almostEqual
func almostEqual(a, b, eps float64) bool {
diff := a - b
if diff < 0 { diff = -diff }
return diff < eps
}
// Dùng:
almostEqual(0.1+0.2, 0.3, 1e-9) // true ✓