c语言小问题
#include <stdio.h>int main ()
{
double a;
int b,c;
b = 5,c=6;
a = b/c;
printf("%lf\n",a);
return 0;
}
结果为什么是0.00000 本帖最后由 sunrise085 于 2020-9-9 21:34 编辑
因为b和c是 int 类型,int 类型的两个变量相除得到的还是 int 类型,而你的b=5,c=8,你那么b/c得到的就是0了。
a=b/c 只是把 int 类型的结果转化为 double 赋值给 a
所以最后输出的是0.00000
需要把除法那一句进行修改,把 b 或者 c 强制类型转化为 double
#include <stdio.h>
int main ()
{
double a;
int b,c;
b = 5,c=6;
a = (double)b/c;//或者写成 a=b/(double)c;
printf("%lf\n",a);
return 0;
} 5 / 6 = 0.83333333;
但由于 b 、c 都是整型,自动去掉小数,就只剩下 0 了,再将 0 自动转换为 double 型赋给 a
输出 0.0000000 没有问题 风过无痕1989 发表于 2020-9-9 21:45
5 / 6 = 0.83333333;
但由于 b 、c 都是整型,自动去掉小数,就只剩下 0 了,再将 0 自动转换为 double...
为什么是0.00000五位小数 本帖最后由 风过无痕1989 于 2020-9-10 00:42 编辑
4399king 发表于 2020-9-9 23:02
为什么是0.00000五位小数
小数点后面应该是6个0 风过无痕1989 发表于 2020-9-10 00:38
小数点后面应该是6个0
为啥是六个呢,能解释一下吗谢谢 4399king 发表于 2020-9-10 09:40
为啥是六个呢,能解释一下吗谢谢
有些东西不必要去纠结 本帖最后由 风过无痕1989 于 2020-9-10 10:43 编辑
4399king 发表于 2020-9-10 09:40
为啥是六个呢,能解释一下吗谢谢
格式字符
格式字符用以指定输出项的数据类型和输出格式。
① d格式:用来输出十进制整数。有以下几种用法:
%d:按整型数据的实际长度输出。
%md:m为指定的输出字段的宽度。如果数据的位数小于m,则左端补以空格,若大于m,则按实际位数输出。
%ld:输出长整型数据。
......
⑦ f格式:用来输出实数(包括单、双精度),以小数形式输出。有以下几种用法:
%f:不指定宽度,整数部分全部输出并输出6位小数。
%m.nf:输出共占m列,其中有n位小数,如数值宽度小于m左端补空格。
%-m.nf:输出共占n列,其中有n位小数,如数值宽度小于m右端补空格。
页:
[1]