关于printf 怎么计算的问题
不知道那里有问题输出的结果是0;贴上我的源码;
#include <stdio.h>
int main(void)
{
double a;
printf("请输入杯数:");
scanf("%f",&a);
printf("\n品脱数是:%f,盎司数是:%f,大汤勺数:%f,茶勺数:%f",a/2,a*8,a*8*2,a*8*2*3);
return 0;
} #include <stdio.h>
int main(void)
{
double a;
printf("请输入杯数:");
scanf("%lf",&a);
printf("\n品脱数是:%f,盎司数是:%f,大汤勺数:%f,茶勺数:%f",a/2,a*8,a*8*2,a*8*2*3);
return 0;
} scanf("%f",&a);把这个改为scanf("%lf",&a);
就好了 Zmynx_2017 发表于 2018-3-24 21:24
scanf("%f",&a);把这个改为scanf("%lf",&a);
就好了
为什么不能%f超出范围的话我用很小的数字试了也不行, 我就比较想知道原理是什么 青骆 发表于 2018-3-24 22:09
为什么不能%f超出范围的话我用很小的数字试了也不行, 我就比较想知道原理是什么
不是超出范围的问题,如果你是float你可以使用lf,但是使用double,你就只能使用lf而不能使用 %f
在用于输出时:
float类型可以使用%lf格式,但不会有任何好处。
double类型如果使用了%f格式可能会导致输出错误。
在用于输入时:
double 类型使用了%f格式,会导致输入值错误。
float类型使用double类型不仅会导致输入错误,还可能引起程序崩溃。
至于原理这个我也不太清楚,这个就跟说为什么是%f,而不是%h,%y
这个你要是愿意研究你可以看看C语言内置的函数什么的是怎么写的,
一般你记住就好了。 http://bbs.fishc.com/thread-67265-1-1.html
请参考取值范围这个帖子。
double 是占用8个字节,
float 占用4个字节,
您这样用,放不下啊, 所以再小的数也会错误。
页:
[1]