关于 C 语言中数据精度问题_C/C++语言_黑客防线网安服务器维护基地--Powered by WWW.RONGSEN.COM.CN

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

作者:黑客防线网安C/C++教程基地 来源:黑客防线网安C/C++教程基地 浏览次数:0

本篇关键词:问题数据语言关于
黑客防线网安网讯: 在软件开发中我们经常遇到数据精度处理问题。  先看如下代码  #include <stdio.h> #include <stdlib.h> #include <string.h>  int main ( void )  {  char *s="0.100001200"; ...
 在软件开发中我们经常遇到数据精度处理问题
  先看如下代码
  #include <stdio.h> #include <stdlib.h> #include <string.h>
  int main ( void )
  {
  char *s="0.100001200";
  fprintf ( stderr, "%f ",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 ",atof(s));
  return 0;
  }
  编译后执行,结果如下
  $ 0.100001200
  $
    黑客防线网安服务器维护方案本篇连接:http://www.rongsen.com.cn/show-15449-1.html
网站维护教程更新时间:2012-04-04 22:55:00  【打印此页】  【关闭
我要申请本站N点 | 黑客防线官网 |  
专业服务器维护及网站维护手工安全搭建环境,网站安全加固服务。黑客防线网安服务器维护基地招商进行中!QQ:29769479

footer  footer  footer  footer