四月天 发表于 2014-12-8 22:30:32

请教各位关于浮点型数据的问题!

今天请教各位鱼油关于浮点型数据的问题!
1.float和double的有效数字分别是6和15,为什么我定义float a=6.0在dev下怎么不会报错?(老谭书上不是说浮点数系统默认双精度)
2.# include <stdio.h>
int main()
{
float a=3.1415926;
double b=3.1415926;
printf("%f,%lf",a,b);
getch();
return 0;
}为什么float和double定义的数,输出的结果均为“3.141593”(怎么会都保留六位呢?)
3.float和double所说的有效数字指的是小数点后还是什么,这里的有效数字能不能理解为“从第一个不是0的数字起,到精确到的位数止”?

仰望天上的光 发表于 2014-12-8 22:38:05

有效位数是指在内存中的有效位数
而printf是一个牛逼的函数,即使你再内存中的有效位数是6位,你让printf打印出20位有效位数它也能够打印出来(这就是为什么说这个函数很牛逼),只不过大于6位的所有打印出来的数据都不可信而已。

float a=6.0;6.0是double类型的,被你转换成float类型了。。。这个最懂也就给个警告而已,不算错误,就像
char a = 14;也不会报错一样。
页: [1]
查看完整版本: 请教各位关于浮点型数据的问题!