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

问题描述:

VC中float和double 型的数字位数是怎么规定弄呢?有效数字是6或7位?为什么总是在小数点后有6位呢?
比如在vc中
#include
main()
{
float x;
x=12345678.0;
printf("x=%f\n",x);
}还有#include
main()
{
float x;
x=123456789.0;
printf("x=%f\n",x);
}
输出的结果有差异,第二歌词程序貌似就是随机数了.求大虾指教
1个回答 分类:综合 2014-10-11

问题解答:

我来补答
我来回答你的问题:
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位表示指数部分.
以上是我的学习意见,给你提供参考~
 
 
展开全文阅读
剩余:2000
也许感兴趣的知识