当前位置:首页 > 开发教程 > C语言 >

关于数据精度问题

时间:2013-09-22 09:04 来源: 作者: 收藏

2345软件教程,为您打造全面的软件教程手册,无论是新奇小软件的操作还是专业软件的使用技巧,2345软件教程都会为您解疑释惑。

核心提示:在软件开发中我们经常遇到数据精度处理问题。

在软件开发中我们经常遇到数据精度处理问题。

先看如下代码

#include <stdio.h> #include <stdlib.h> #include <string.h>

int main ( void )

{

char *s="0.100001200";

fprintf ( stderr, "%f\n",atof(s));

return 0;

}

以上代码编译后执行,结果如下:

$ 0.100001

$

问题出在哪里,是 atof 函数的问题? 将 atof(s) 替换成 strtod(s,NULL) 后,结果依然如此。

经过测试,发现并非是 atof 或 strtod 函数转换时精度丢失,而是 %f 的格式化输出符默认的输出为小数点后面 6 位的精度。

我们将上面的代码修改为:

#include <stdio.h> #include <stdlib.h> #include <string.h>

int main ( void )

{

char *s="0.100001200";

fprintf ( stderr, "%18.10f\n",atof(s));

return 0;

}

编译后执行,结果如下

$ 0.100001200

$


C语言阅读排行

最新文章