Tại sao in 99999999 kiểu float ra 1e+8 mà không phải là 99999999?

Em chào mọi người, em có tạo một biến kiểu float, khi gán cho nó là 99999999 thì nó lại in 1e+8 biết là nó tương đương nhưng mà có cách nào để nó hiển thị là 99999999 được không ạ.

Không hiện đúng nổi đâu bạn (mình bị rồi) :slight_smile: chỉ đến 2^24 ~ 16 triệu thôi.

6 Likes

Việc “in ra” là phụ thuộc vào hàm “in ra” hay toán tử “in ra”.
Còn “con số nó vẫn là con số”.
Nếu xài printf của C thì đọc bài cơ bản về printf,
http://www.cplusplus.com/reference/cstdio/printf/?kw=printf
Nếu xài toán tử “<<” trong C++ thì tham khảo cách setting format
http://www.cplusplus.com/reference/ostream/ostream/operator<</

Ngoài ra, kiểu số thực (float, double) sẽ biểu diễn con số dưới dạng dấu phẩy động (floating-point).
Điều này dẫn đến sẽ có trường hợp ko thể biểu diễn đúng chính xác các con số rời rạc(số nguyên).
Hãy đi tìm hiểu cách biểu diễn số = dấu phẩy động để biết rõ hơn. (trên internet có nhiều)
Hồi trước đi thi cái bằng FE, có mấy câu hỏi liên quan đến quy đổi số sang dấu phẩy động. H quên hết rồi ^^.

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