您的位置: 首页 > 软件教程 > 关于 C 语言中数据精度问题

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

8.3分
出处:网络 时间:2011-06-24

您可能感兴趣的话题: C语言  

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

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

  先看如下代码

  #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

  $

网友评论

精品软件课程
更多 >
photoshop教程让你从入门到精通,从新... [详细]
快播播放器(Qvod Player)是一款基... [详细]
Word是由Microsoft公司出版的文字... [详细]
《植物大战僵尸》是一款极富策略性的小游戏,可... [详细]
Excel是office的重要组成部分。多特... [详细]