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()函数是取绝对值。