C语言分数输出

main(){floatC;C=3/2;printf("%f",C);getch();}为什么输出结果不是1.500000而是1.000000,如何改正?谢谢!... main()
{ float C;
C=3/2;
printf("%f",C);
getch();
}
为什么输出结果不是1.500000而是1.000000,如何改正?
谢谢!
展开
 我来答
正青春梦飞扬

推荐于2017-08-24 · 知道合伙人互联网行家
正青春梦飞扬
知道合伙人互联网行家
采纳数:6837 获赞数:306020
对SEO有这独特见解 工作努力积极、团结同事 连续2个月个人工作完成优秀 客户0投诉 评委最佳班组经理

向TA提问 私信TA
展开全部
如果采用float或者double定义数据类型,则无法以分数形式输出,原因是该数据类型的计算结果会采用二进制小数表示,出现误差而无法用分数精确表示。
如果需要用分数形式输出,最好的方法是采用两个int类型的变量储存分子和分母,手动计算分数的加减乘除,这样输出的时候只需要按照整数的输出方式,手动添加分数线即可。
具体方法可以参考如下程序段:
int num; // 定义分子
int den; // 定义分母
double a = 3.5;
num = 7; // 3.5的分子
den = 2; // 3.5的分母
printf("%d\n", num); // 输出分子并换行
printf("----\n"); // 输出分数线并换行
printf("%d\n", den); // 输出分母并换行
百度网友b173602
2009-12-25 · TA获得超过1680个赞
知道小有建树答主
回答量:1466
采纳率:0%
帮助的人:825万
展开全部
因为C=3/2;这个表达式的计算顺序是:先计算3/2 这个计算是整型的计算 所以结果是1 然后再赋给float 类型的C 所以结果是1.0000000 呵呵,如果要想得出1.50000,那么就将3/2改为3/2.0,就可以了
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友3d7451c
2009-12-25 · 超过17用户采纳过TA的回答
知道答主
回答量:42
采纳率:0%
帮助的人:42万
展开全部
main(){
float c;
c=(float)3/2;
//c=3.0/2;
printf("%f",c);
getch();
}

数据类型转换问题。
3/2 3.2都是INT 1.5只会取整数部分1
在转换就是1.00
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式