美文网首页
atof 到float 类型 精度损失

atof 到float 类型 精度损失

作者: 天幕下悠悠 | 来源:发表于2018-12-26 16:19 被阅读0次

字符串转换为浮点数的函数,标准C提供的函数是atof(char *),C++ Builder 提供了一个函数 StrToFloat(AnsiString *),但是如果你直接定义一个浮点数变量,将字符串转换为单精度浮点数的话,很容易出问题,出现精度误差,下面给出一个简单的例子

char *strDemo ="0.00100";

float fDat;

fDat = atof(strDemo);

ShowMessage(fDat);

上面代码的运算结果为:0.00100000004749475,存在明显的转换误差。

仔细看了一下字符串转换为浮点数的函数定义:double atof(const char *s);

atof()函数的返回值类型是double类型的,如果将其赋值为一个单精度的浮点数,肯定存在精度损失,找到了原因所在,将上面代码中的float修改成double,编译运行,显示结果为0.001。

OK! 问题解决。

---------------------

作者:geophoenix

来源:CSDN

原文:https://blog.csdn.net/geophoenix/article/details/7845731

相关文章

  • atof 到float 类型 精度损失

    字符串转换为浮点数的函数,标准C提供的函数是atof(char *),C++ Builder 提供了一个函数 St...

  • Python

    基本类型 1. Number类型 整数: int 浮点数: float(双精度) 其他语言: 单精度(float)...

  • 浮点数的表示

    语言和C#语言中,对于浮点类型的数据采用单精度类型(float)和双精度类型(double)来存储,float数据...

  • mysql8 数据类型 float double decimal

    float数值类型用于表示单精度浮点数值,而double数值类型用于表示双精度浮点数值,float和double都...

  • 浮点类型解析

    一、类型定义浮点类型有float、double、long double类型,即单精度、双精度、长双精度,一般情况下...

  • numpy的power和float_power的区别 2020-

    float_power会强行转成float,但是原来如果是int64的话可能精度有损失 NumPy float_p...

  • c语言_数据类型—详细介绍。

    字符类型char 整数类型int 长整形long 长长整形 long long 单精度浮点类型float 双精度浮...

  • double和float的误区!

    区别 float是单精度类型,精度是8位有效数字,取值范围是10的-38次方到10的38次方,float占用4个字...

  • 2018-09-12

    一、Python的基本数据类型 整数:int 浮点数:float注意,在其他语言中有:单精度:float,双精度:...

  • c++ primer 阅读 day2

    第I部分 C++ 基础 2.1 基本内置类型 float 精度float和double的精度是由尾数的位数来决定的...

网友评论

      本文标题:atof 到float 类型 精度损失

      本文链接:https://www.haomeiwen.com/subject/phohlqtx.html