关于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后就正常了
为什么产生这样的结果?
请大佬们指教一下。