Chào các anh chị, hiện tại thì thầy đang giao cho em làm bài tập in ra tất cả các giá trị kiểu nguyên ko thể dc biểu diễn chính xác bằng kiểu float (vì float có sai số, mấy số nhỏ sai số nhỏ ko cần in, chỉ in mấy số có sai số lớn, ví dụ như em nhập vào float x = 33554433 thì printf lại in ra 33554432, in số đó ra)
em cho biến float và biến double cùng chạy, nếu khác nhau thì in số đó ra (vì double chính xác hơn float)
em cũng có sài một đoạn code test thử giả thuyết đó
#include <stdio.h>
#include <conio.h>
int main()
{
float x = 1;
double y = 1;
if (x!=y)
printf("khac nhau %.0f\n", x);
else
printf("giong nhau %.0f\n", x);
x = 33554433;
y = 33554433;
if (x != y)
printf("khac nhau %.0f\n", x);
else
printf("giong nhau %.0f\n", x);
_getch();
}
còn code bài làm của em hiện tại nó như thế này
#include <stdio.h>
#include <conio.h>
int main()
{
float x = 1;
double y = 1;
while (1)
{
if (x != y)
printf(" %.0f\n%.0f\n", x,-x);
x++;
y++;
}
_getch();
}
vấn đề em đang gặp phải là biến float của em chỉ chạy được tới số 16777216 là ngưng, ko tăng tiếp dc nữa trong khi biến double vẫn tăng bình thường
em test thử trên một đoạn code khác thì nó cũng tương tự, biến float ko tăng được tới 16777217
#include <stdio.h>
#include <conio.h>
int main()
{
float x = 16777216;
printf("%.0f", x+1);
_getch();
}
kết quả in ra vẫn là 16777216
mấy anh chị giúp em với tại bài này là để nhóm em làm đồ án cho thầy thi giữa kỳ quan trọng lắm