Hỏi đáp
Chia sẻ kiến thức, cùng nhau phát triển
Tại sao không thể lưu chính xác 1 số kiểu float vào máy tính.
13:26 22-10-2017
882 lượt xem
2 bình luận
00:44 24-10-2017
Em có đoạn code:
#include <stdio.h>
void main(){
float x = 33554433.0;
printf("%f", x);
if (x == 33554433)
printf("True");
else
printf("False");
}
Khi in ra được x = 33554432.0000 nhưng xét x == 33554433 (int) thì lại ra True.
Tại sao máy lại không lưu được chính xác giá trị trên và sao lại là True. Em cảm ơn.
Vì độ chính xác của float là 7 chữ số, nên những số sau đó sẽ bị làm tròn (xem bài số chấm động).
Lời khuyên là nên xài double thay vì float, kết quả sẽ khác.