fscanf直接获取浮点数误差问题及解决
来源:互联网 发布:mysql 时间加1秒 编辑:程序博客网 时间:2024/06/12 21:39
最近编写的程序需要从配置文本文件中扫描读取一些字符串、浮点类型的参数,使用了如下一句:
fscanf(stream, "%s , %f\n", strPara,&f);
在实际应用中发现strPara结果正常,f获取则有误差,例如配置文本文件中明明是8.40000的数值,直接执行后f获得的是8.39999,误差虽小但在精确数据应用场合这种情况显然不利。
问题出现原因应该与C语言中浮点数表示精度误差有关。解决方法自有多种,有网友提出用C++的fstream进行流输入输出,在全新设计的程序中应该是很好的解决之道。自己的情况是在已有多行读入读出代码情况下改进,保留fscanf更现实一些,因此采用了稍微迂回的解决之道,改进代码如下
fscanf(stream, "%s , %s\n", strPara, strValue);
f = atof(strValue);
根据字符串扫描准确的情况将数据段先分割保存到字符串strValue,再利用atof函数进行针对转换,获得了准确的数据结果。
- fscanf直接获取浮点数误差问题及解决
- 浮点数误差问题?
- 关于浮点数的运算误差问题
- java浮点数出现误差问题
- JS浮点数加减乘除误差问题
- 08_浮点类型_浮点数误差问题
- 浮点数的误差
- 浮点数的误差
- 浮点数误差陷阱
- 浮点数float累加误差分析与解决
- 浮点数float累加误差解决方式总结
- 对于js浮点数误差问题 完美解决办法
- HDU1701 ACMer 【浮点数误差】
- 1.浮点数运算误差
- 浮点数的精确误差
- java学习之旅08--浮点数_浮点数误差问题
- [刷题笔记]Codeforces 105A 获取浮点数的整数部分,浮点误差
- C语言中fscanf函数读取double型浮点数的问题
- 在Ubuntu上搭建PHP+Mysql+Nginx环境(apt-get方式)
- JS获取浏览器窗口大小,屏幕,网页宽高
- stringObj.match(rgExp)
- IP可获省
- sizeof 使用方法
- fscanf直接获取浮点数误差问题及解决
- Linux(centos)系统各个目录的作用详解
- VS版本号控制
- size_type
- 使用 HttpClient 和 HtmlParser 实现简易爬虫
- 详设模板
- 导出到word
- Active MQ C++实现通讯
- log4j按级别分类输出日志到相对路径日志文件