当前所在位置:珠峰网资料 >> 计算机 >> 计算机等级考试 >> 正文
C语言技巧:关于C语言中数据精度问题
发布时间:2010/1/8 22:32:15 来源:城市学习网 编辑:海蓝

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

  先看如下代码

  #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

  $

广告合作:400-664-0084 全国热线:400-664-0084
Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号
珠峰网 版权所有 All Rights Reserved