关于double和%f,%lf的问题
我在撸这段代码时没考虑精度损失,于是就用了%f,然后在编译时无论输入什么值,输出的值都是固定点,而将%f改成%lf后就正常了。
我在想即使精度损失了,但应该还会有个变化的值;
程序代码:#include<stdio.h>
#define JL 3.785
#define YL 1.609
int main()
{
double mile;
double gallon;
double mile_per_gallon, liter, liter_per_100km, km; //double 需要用%lf
printf("Enter mile:\n");
scanf("%f", &mile);
printf("And gallon:\n");
scanf("%f", &gallon);
mile_per_gallon = mile / gallon;
printf("mile per gallon=%f\n", mile_per_gallon);
liter = JL*gallon;
km = YL*mile;
liter_per_100km=liter / (100.0 * km);
printf("liter per 100km=%f", liter_per_100km);
return 0;
}%时任意输入两组值
1.
2.
改成%lf后就正常了
为什么产生这样的结果?
请大佬们指教一下。


