鱼C论坛

 找回密码
 立即注册
查看: 995|回复: 7

[已解决]c语言小问题

[复制链接]
发表于 2020-9-9 21:27:53 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#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
最佳答案
2020-9-10 10:42:38
本帖最后由 风过无痕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右端补空格。

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-9-9 21:30:45 | 显示全部楼层
本帖最后由 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;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2020-9-9 21:45:59 | 显示全部楼层
5 / 6 = 0.83333333;

但由于 b 、c 都是整型,自动去掉小数,就只剩下 0 了,再将 0 自动转换为 double 型赋给 a

输出 0.0000000 没有问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2020-9-9 23:02:33 | 显示全部楼层
风过无痕1989 发表于 2020-9-9 21:45
5 / 6 = 0.83333333;

但由于 b 、c 都是整型,自动去掉小数,就只剩下 0 了,再将 0 自动转换为 double  ...

为什么是0.00000五位小数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-10 00:38:45 | 显示全部楼层
本帖最后由 风过无痕1989 于 2020-9-10 00:42 编辑
4399king 发表于 2020-9-9 23:02
为什么是0.00000五位小数


小数点后面应该是6个0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-9-10 09:40:37 | 显示全部楼层
风过无痕1989 发表于 2020-9-10 00:38
小数点后面应该是6个0

为啥是六个呢,能解释一下吗谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-10 10:17:31 | 显示全部楼层
4399king 发表于 2020-9-10 09:40
为啥是六个呢,能解释一下吗谢谢

有些东西不必要去纠结
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-10 10:42:38 | 显示全部楼层    本楼为最佳答案   
本帖最后由 风过无痕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右端补空格。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-13 03:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表