设为首页 加入收藏

TOP

关于C语言中数据精度问题
2014-11-23 21:26:54 】 浏览:4280
Tags:关于 言中 数据 精度 问题

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


  先看如下代码


  #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


  $


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇C++十个最具人气关键字 下一篇查看数字在计算机内部的二进制表示

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目