首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

【新人】C语言实型常量的赋值中的简单有关问题!多谢大家

2012-10-18 
【新人求助】C语言实型常量的赋值中的简单问题!谢谢大家#include stdio.hvoid main(){float xdouble ypr

【新人求助】C语言实型常量的赋值中的简单问题!谢谢大家
#include <stdio.h>
void main()
{
float x;
double y;
printf("输入实型常量x,y\n");
scanf("%f%f",&x,&y);
printf("单精度显示数值:%f 双精度显示数值:%f\n",x,y);
while(1);
}
假如我输入33333333333333 33333333333333
大家他会显示:
单精度显示数值:333333317812224.000000 双精度显示数值:-92559609535237229000000000000000000000000000000000000000.0000000
就是好像给Y的值没赋进去
我的代码没错
我也试过不给X赋值,直接给Y赋值,结果也是同样的
谢谢各位高手了!

[解决办法]
double类型要用lf,改成这样scanf("%f%lf",&x,&y);
[解决办法]
#include <stdio.h>
void main()
{
float x;
double y;
printf("ÊäÈëʵÐͳ£Á¿x,y\n");
scanf("%f%lf",&x,&y);
printf("µ¥¾«¶ÈÏÔʾÊýÖµ:%f Ë«¾«¶ÈÏÔʾÊýÖµ:%lf\n",x,y);
while(1);
}


由于float和double范围不一样。
所以结果:
3333333450752.000000 33333333333333.000000

中float前7位是正确的。后面的几位超过范围了。
float:2^23 = 8388608,一共七位,这意味着最多能有7位有效数字,但绝对能保证的为6位,也即float的精度为6~7位有效数字;
double:2^52 = 4503599627370496,一共16位,同理,double的精度为15~16位。

热点排行