Thắc mắc về vòng for với biến chạy i là kiểu số thực

Như thế vẫn là đếm được.

Hi HK boy.
Từ 1 đến 10 bạn đếm được bao nhiêu số nguyên bao nhiêu số thực ? Tập số thực là tập lực lượng không đếm được. Tập số nguyên lực lượng đếm được.

i += eps là đếm được. Trừ khi eps quá bé, khoảng 10^-15. Bạn lấy ví dụ eps cũng không bé lắm, do vậy nó vẫn là đếm được.

Hi HK boy.
Bạn có thể tham khảo thêm về đếm được và không đếm được.

Đã for while rồi còn thòng thêm thực với chả nguyên, nói là nói cái đấy liên quan gì.

Số thực trong máy tính khác với trong toán xa lắc =)) lấy toán ra khè ai vậy.

Nghĩ thử mà xem, float 32 double 64, sao lại không đếm được chứ.

2 Likes

Hi rogp10.
Nó là do cái này.

vì rất dễ xảy ra trường hợp 0.1 + 0.2 != 0.3 (99%).

Bạn nhầm văn cảnh rồi.

Ý mình là không sử dụng toán tử != khi áp dụng vào điều kiện của for. Và while cũng thế.

1 Like

Đem cái for đó về với Pascal yêu vấu của bạn nhé :slight_smile: giờ này còn giáo điều for là chỉ có to với downto với step (VB) thôi à.

2 Likes

Hi HK boy.
Đó chính là vấn đề. Do không tính toán chính xác trên số thực nên dẫn đến sai số. Nếu chỉ thực hiện phép tính một lần thì không sao nhưng nếu lặp nhiều lần thì sai số lũy tiến tăng lên.


Mình dùng g++ 5.4.0 trên ubuntu 16.04. Bạn có thể tìm kiếm “Do not use floating point variables as loop counters” trên gg, có khá nhiều lỗi trên stack về việc làm tròn số này.

Cái này nằm trong lưu ý các lỗi khi lập trình C++.
https://www.securecoding.cert.org/confluence/display/cplusplus/VOID+Do+not+use+floating+point+variables+as+loop+counters

Hi rogp10
C/C++ Là một công cụ rất mạnh nhưng nó chỉ có ích khi được dùng bởi người nắm rõ về nó. Còn nếu không nên bắt đầu với Pascal để tránh các trường hợp đáng tiếc như này.

For có sức biểu đạt không kém while, đoạn nào viết bằng while được thì viết bằng for được.

1 Like

DE @@
Khẩu súng lục bá đạo nhất trong CS hay dân gian gọi là “lục bạc” mạnh hơn M4A1 và AK47 bảo sao không chết ::))
Một game thủ fps nửa mùa cho hay.

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?