c++ double类型的误差

来源:互联网 发布:工商银行网络银行 编辑:程序博客网 时间:2024/05/01 03:05

将字符串转化为double类型存在误差,例如:

字符串为1.89转化为double类型为:1.8899999999999.

这是正常的。

在c语言中头文件float.h中有如下定义:

#define DBL_EPSILON     2.2204460492503131e-016 /*smallest such that 1.0+DBL_EPSILON != 1.0 */

也就是说,只要使用double类型,如果两个double类型的数的差小于DBL_EPSILON,这两个数就是相等的。这是使用double类型的前提。

 

可以测试一下: 

double f  =  1.89 – atof(“1.89”);

f 为零。因为1.89 – atof(“1.89”)的差值小于DBL_EPSILON,它们就是相等的。

 

结论:这是正常的,所谓的精度误差是使用double类型必须接受的。

0 0
原创粉丝点击