来看一下C语言中这个float的问题

我写的:
printf("%d\n",(float)(5+2));

为什么结果是0啊???

%d 按整型数据的实际长度输出
%md m是指输出字段的宽度。如果数据的位数小于m,则在左端补空格;若大于m,则按数据的实际位数输出。
%ld 输出长整型数据
%o 以八进制输出整型数
%x 以十六进制输出整型数
%u 以十进制输出unsigned型数据
%c 输出字符
%s 输出字符串
%ms 输出字符占m列,如果串长度小于m则左边补空格,若大于m则按原长度输出
%-ms 如果串长度小于m,则字符串相左靠,右边补空格
%m.ns 输出占m列,但只取字符串的左端n个字符。这n个字符在m的右侧,左边补空格
%-m.ns 其中m,n含义同上,n个字符输出在m列的左侧,右端补空格。如果n>m,则m自动取n值,即保证n个字符正常输出
%f 不指定字符宽度,由系统自动指定,使整数部分全部输出,并输出6位小数。应当注意输出的数字并非全部都是有效数字。单精度数的有效位数一般是7位,而双精度数的有效位数一般是16位。
%m.nf 指定输出的数列占m列,其中有n位小数。若数值长度小于m,左端补空格。
%-m.nf与%m.nf 的区别仅在于使输出的数值向左端靠,右端补空格。
%e 不指定输出数据所占的宽度和数字部分的小数位数
%m.ne和%-m.ne含义与前面相同
%g 假设一个数要用%f和%e输出,用%g格式时自动从这两种格式中选出最短者

参考资料:http://baike.baidu.com/view/410546.htm http://baike.baidu.com/view/1427555.htm?func=retitle

温馨提示:内容为网友见解,仅供参考
第1个回答  2008-11-23
%d是不能输出float类型的数据的。应该是printf("%f\n",(float)(5+2));
如果是你那样写的话,后面的数字如果是小数时,就是小数点后面不全为0的时候,输出就不是0了,例如:printf("%d\n",(float)(5.2345+2)); 这个与计算机浮点数的编码有关。
第2个回答  2008-11-23
因为输出的为%d是int类型,不符合float类型的数据,若改为printf("%f\n",(float)(5+2)); 就会输出正确数据
第3个回答  2008-11-23
前后的数据类型不配

要不把前面的输出格式改为%f,要不把后面的(float)去掉
第4个回答  2008-11-23
汗哦!!后面是整型啊,你为什么要强制转换成浮点型啊!!那样结果就不正确了

来看一下C语言中这个float的问题
u 以十进制输出unsigned型数据 c 输出字符 s 输出字符串 ms 输出字符占m列,如果串长度小于m则左边补空格,若大于m则按原长度输出 -ms 如果串长度小于m,则字符串相左靠,右边补空格 m.ns 输出占m列,但只取字符串的左端n个字符。这n个字符在m的右侧,左边补空格 -m.ns 其中m,n含义同上,...

C语言-float变量的问题
{ float f1=2.1234567,f2=12345678901234567.123456789;int i1,i2;i1=f1; i1为整型,f1为浮点型,你将浮点型的数据强制赋值给整型, 会导致小数点后数值丢失 i2=f2; f2数值已经超过了整型所得的最大值,因此i2数值越界 printf("%d,%d\\n",i1,i2);} ...

C语言里面float数据用printf(“%d”)输出的问题
C语言里面float数据用printf(“%d”)输出是0,是float数据使用错误造成的,解决方法如下:1、首先在电脑中打开C-Free 5编译器(界面) -> 文件 -> 新建(Ctrl+N)。2、然后输入下图所示代码。3、编译成功后的截图。如果编译失败,请检查语法或者编译器是否有问题。4、程序运行截图(开始和结束)。...

C语言 简单的float 问题
(float)1\/100 是1.0和100相除 float和int运算结果是float 所以才可能是0.01

c语言中关于float类型的问题
记不太清楚啦。好像意思是说浮点可以精确7个有效数字。而且小位数默认为6位小数。你整数部分肯定不会出错的。但是只有7个有效数字。所以后面的其他小数点会出错。各个电脑出错的值会有点不太相同。

C语言float的问题
printf("%6.2f\\n",1.2345678); \/\/输出两个空格然后是1.23(1点23一共是四个字符)printf("%6.2f\\n",12345.6789); \/\/输出12345.68,小数位为2位,加上小数点和整数位,超出6位限制,\/\/那么就忽略总宽度限制,有的叫自动突破。至于最后那个.68,是四舍五入 } ...

C语言中float和double的问题。
float 有效数字6-7位,double 有效数字14-16位,同编译器有关。标准的C规定 float 用 32 位2进制,double 用 64 位2进制。用格式: printf("x=%.10f\\n",x); 可以输出小数10位。(1) x=2222222222.22222 -- 15 位精度,第16位起含舍入误差,(2) x=22222.67 -- 7位精度, ...

请帮我看下C语言float那行出现错误 求指教
错误在这行 define f(x) (2*x*x*x-4*x*x=3*x-5)我不知道你的目的,但是 '='不应该在括号内,#define 等同巨集,if(f(c)==0)会变成 if((2*x*x*x-4*x*x=3*x-5)==0)不符文法 你应该先化简 f(x) (2*x*x*x-4*x*x-3*x+5)就可以了 ...

C语言 用float 定义数组的问题
这个不是float类型定义的问题,而是类型转换问题,你定义a数组为float类型,而输出格式%d是整形,只要你把输出格式改为 %f 就可以了,或者直接将a[1]强制转换为整形,只取整数部分进行输出:即,你的代码应该改为如下:include <stdio.h> int main(){ float a[10] = {1.1, 2.2, 3.3};print...

C语言里float类型变量问题
float、double变量有偏差,我觉得你没必要关心。不同编译器会不一样。float、double变量,关心精度更实际一点:二者都是科学计数法存储 float是32位长度,double是64位长度float32位中,有1位符号位,8位指数位,23位尾数为double64位中,1位符号位,11位指数位,52位尾数位取值范围看指数部分float是有...

相似回答
大家正在搜