首页 行业资讯 宠物日常 宠物养护 宠物健康 宠物故事

请问VC++ 6.0 小数点后面显示的数字为什么会不正确

发布网友

我来回答

1个回答

热心网友

计算机里使用科学计数法来存放浮点型数据,并不能精确表示某一个浮点数。

在float.h头文件下面有两个宏,用来说明double、float两种数据类型有效数字的位数,注意不是小数点后面的有效位数,而是所有位数。

#define DBL_DIG         15                      /* # of decimal digits of precision */

#define FLT_DIG         6                       /* # of decimal digits of precision */

float能保证的有效位数最多是6~7位,完全能保证的是6位,double是15~16位,完全能保证的是15位。

你再对照一下你测试的输出,就明白了,所以,在判断浮点数相等的时候,不能直接用==操作符,而是用一个可以接受的误差精度来表示,比如:

#define EPSILON 0.000001 //根据精度需要  
if ( fabs( fa - fb) < EPSILON )  
{  
    //两个浮点数相差小于该精度,就可以粗略地认为这两个浮点数相等
}

可以去找一些关于float,double类型、表示范围的资料来看看

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com