我的位置: 首页 > 学习专区 > .NET技术 > 关于 C 语言中数据精度问题

关于 C 语言中数据精度问题

2013-05-31 08:40:41
来源:
[导读] 在软件开发中我们经常遇到数据精度处理问题。先看如下代码 include include includeint main ( void ){char *s= "0 100001200 ";fpr

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

先看如下代码

#include #include #include

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 #include #include

int main ( void )

{

char *s="0.100001200";

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

return 0;

}

编译后执行,结果如下

$ 0.100001200

$

深圳北大青鸟http://www.ruanjsx.com

大家都关注:
评论
热点专题
>>