数据类型——浮点运算

发布时间 2023-05-22 16:56:02作者: 小糊涂2022

printf输出inf表示超过范围的浮点数:无穷大或无穷小

printf输出nan表示不存在的浮点数

 

浮点运算的精度

  •  float和double都无法准确的存储一个小数
  • 浮点数的计算是没有精度的。
  • 浮点数在内存中使用编码的形式存储的
  • 浮点数在计算时是由专用的硬件部件实现的

 

float的赋值

a = 1.345;    //这样不准确

b = 1.123f;   //要在小数后面加f或者F表明float类型

 

  • 带小数点的字面量是double而非float
  • float需要用f或者F的后缀来标明身份

float a,b,c,

a =  1.345f;

b = 1.123f;

c = a + b;

if(c == 2.468)

printf("相等\n");

else

prinf("不相等! c=%.10f,  或%f\n",c,c);

 

输出结果

不相等! c=2.4679999352,或2.468000。

 

比较两个浮点数是否相等可能失败。

一般将两个浮点数相减,取绝对值,

与最小误差相比较,来确定他们是否相等

比如

   fabs(f1 - f2)< 1e-12

fabs()函数是取绝对值。