VC中float和double 型的数字位数是怎么规定弄呢?有效数字是6或7位?为什么总是在小数点后有6位呢?

比如在vc中
#include<stdio.h>
main()
{
float x;
x=12345678.0;
printf("x=%f\n",x);
}还有#include<stdio.h>
main()
{
float x;
x=123456789.0;
printf("x=%f\n",x);
}
输出的结果有差异,第二歌词程序貌似就是随机数了。。。求大虾指教

我来回答你的问题:
float类型的比特位数为32位,也就是4字节,有效数字为6~7位;
double类型的比特位数为64位,也就是8字节,有效数字为15~16位;
你这里数字为x=12345678.0九位有效数字而float只能接收7位有效数字,那么8.0就是无意义的,并不准确地表示该数。
x=123456789.0时,10位有效数字,同样也只能接收7位有效数字,那么89.0也是无效的,也是不准确地表示该数。
如果你想电脑准确地表示该数应该用double类型就可以了。
我再来给你讲一下为什么总是在小数点后有6位。原因是这样的:
浮点型数据在内存中是按照指数形式存储的。系统把一个浮点型数据分成小数部分和指数部分,分别存放。指数部分采用规范化的指数形式。以24位表示小数部分,以8位表示指数部分。
以上是我的学习意见,给你提供参考~~~
祝你开心,学习进步~~~
温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网