关于C语言中数据精度问题
来源:优易学  2011-12-10 16:55:55   【优易学:中国教育考试门户网】   资料下载   IT书店

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

  先看如下代码

  #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

  $

责任编辑:小草

文章搜索:
 相关文章
热点资讯
资讯快报
热门课程培训