Lỗi xuất số thực

Cho mình hỏi là sao khi mình nhập n=7.2019 thì khi xuất ra lại là 7.201900005 vậy ạ, có cách nào để khắc phục không ạ?

printf("Nhap so n can chuyen doi:");
	scanf("%f",&n);
	printf(" %.9f ",n);

Có một điều bạn phải lưu ý khi sử dụng kiểu số thực trong C/C++ (và các ngôn ngữ tương tự) nha.

Không chỉ ở dải biểu diễn mà bạn còn phải để ý đến độ chính xác của từng kiểu số thực trong C/C++. Ví dụ:

  • float: 1.2x10-38 - 3.4x1038 với độ chính xác 6 chữ số thập phân sau dấu phẩy.
  • double: 2.3x10-308 - 1.7x10308 với độ chính xác 15 chữ số thập phân sau dấu phảy.
  • long double: 3.4x10-4932 - 1.1x104932 với độ chính xác 19 chữ số thập phân sau dấu phảy.

Mà cũng liệt kê hết mất r. :sweat_smile:

Do đó bạn chỉ có thể biểu diễn chính xác 6 chữ số thập phân sau dấu phảy thôi, cho nên số 5 có thể gọi là rác.

Còn nếu bạn vẫn muốn dùng %.9f thì bạn phải sửa thành kiểu double hoặc long double. (Và nhớ sửa %f thành %lf or %llf :laughing:)

2 Likes
3 Likes

Mình cảm ơn :grinning:

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