Я пытаюсь написать простую программу на языке С, которая вводит данные пользователя в метрах и печатает выходные данные в километрах, ярдах и милях округленные до 4 знаков после запятой.Разница в выводе при печати значения, хранящегося в переменной, и значение печати напрямую с помощью printf()
Я использовал этот 1 метр = 0.001 километров = 1,094 ярдов = 0.0006215 миль
Когда я пишу это, я получаю выход по назначению:
#include <stdio.h>
int main()
{
int m;
float km, y, mi;
scanf("%d",&m);
km=(m*0.001);
y=(m*1.094);
mi=(m*0.0006215);
printf("%.4f\n%.4f\n%.4f",km,y,mi);
return 0;
}
Выход:
0,1000
109.4000
0,0622
Но, когда я пишу это я получаю третий выходной неправильно:
#include <stdio.h>
int main()
{
int m;
scanf("%d",&m);
printf("%.4f\n%.4f\n%.4f",(m*0.001),(m*1.094),(m*0.0006215));
return 0;
}
Выход:
0,1000
109,4000
0,0621
Можете ли вы помочь мне найти причину этой разницы?
Edit-1
здесь я дал вход 100.
float y=100*0.0006215;
printf("%f",y);
дал выход 0.062150
и это
printf("%f",100*0.0006215);
также дал выход 0.062150
Редактировать-2
float y=100*0.0006215;
printf("%.4f",y);
дал выход 0,0622
в то время:
printf("%.4f",100*0.0006215);
дал выход 0.0621
В то время как в Edit-1 оба отображались на одном выходе.
Я не могу связать «Является ли математика с плавающей запятой?» вопрос с моим вопросом. См. Редактирование. –