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

float的有效数字到底是6位还是7位?解决思路

2012-03-27 
float的有效数字到底是6位还是7位?下面的一段程序:# include stdio.hvoid main(){float mm2.5+7%3*(in

float的有效数字到底是6位还是7位?
下面的一段程序:

# include "stdio.h"

void main()
{  
float m;
m=2.5+7%3*(int)(2.5+4.7)%2/4;
printf("m=%f",m);

printf("end!"); //在此行设置一个断点

}

调试运行后,停在断点处,然后奇怪的问题就处理了:

在控制台窗口打印出来是m=2.500000(七位有效数字),但是,用debug的变量查看窗口却显示m是2.50000(六位有效数字),不知道是怎么回事?

请高手指教!



[解决办法]
控制台窗口打印出来是m=2.500000(七位有效数字),但是,用debug的变量查看窗口却显示m是2.50000(六位有效数字),

你编程的目的肯定是想正确输出吧, 那只要输出正确就行了管debug干吗?

何况 debug还能按HEX 方式显示呢.说不准的

换个方式测试吧比如使用 pi ,看看能准确输出到第几位.

其实没必要这么讲究,如果精度要求高就用 double,如果还不够高 就用 long double

灵活点吗!
[解决办法]
前面有人说了尾数23,2^23=8388608,所以有效数字是七位,但是只能保证6位,因为7位表示不了全部。C++ primer也是这样说的,float只能保证6位有效数字,double保证10位(第四版P32)。

热点排行