C语言 float

发布网友

我来回答

8个回答

热心网友

这个,怎么说呢,首先你看下这句a=1/6,你要明白,C并不把1/6当成一个数值进行处理,这只是一个运算式,也就是说,C要先用1去除6,得到一个数值0.166667,然后,C强制将其转化为整型(1和6都是整型,C会进行默认强制转换为整型),得到0,然后将0再赋给a,转化为Float型,于是就得到0.0000了,你可以将1或是6中的一个改为1.00或6.00就会转换为浮点型了,

热心网友

改成如下形式:
{
float a;
a=1.0/6.0;
printf("%f",a);
}
输出时最好*小数位数,例如:printf("%.6f",a);是输出六位小数。

热心网友

这里牵扯到一个运算优先级的问题

在同一混合运算中 把运算优先级低的类型转换成

运算优先级高的类型 (这个是系统自动转换和 强制转换两种技)

喜欢计算机语言的朋友可以加入

6833308 群

C C++ JAVA VC C# 等 我们共同学习交流

热心网友

1和6都是int型
”/”在两个整型数据之间被当做整除,然后将整数0换成了单精度型
只要在”/”的任何一边用单精度数据就不会出错了

热心网友

支持 estellia - 高级魔法师 七级 的答案
有理有据

热心网友

#include"stdio.h"
main()
{float a;
a=(float)1/6;
printf("%f",a);
}
正确答案!!!

热心网友

改为如下形式:

main()
{float a;
a=1.0/6;
printf("%f",a);
}

热心网友

因为a=1/6
这步,
a 被赋值,系统被认为是整型数,
改为如下
a=1.0/6

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com