Vì thế chắc chắn C sẽ khác 0.3 mà nó có thể là 0.3000000000000000001

Chả có gì chắc chắn cả. Tùy phần cứng, tùy hệ điều hành, tùy trình biên dịch, tùy thiết đặt của trình dịch mà có thể có có thể không.
vậy là bác không hiểu về lập trình rồi. Thông thường, khi so sánh 2 số thực với nhau, người ta không bao giờ so sánh trực tiếp kiểu IF A=B hết, thay vào đó, người ta dùng kiểu sau:
IF ABS(A-B)<= (số rất bé nào đó ví dụ 10^-8) THEN ...
có nghĩa là nếu chênh lệch của 2 số A và B nhỏ đến mức nào đó thì coi như 2 số bằng nhau