1.存储精度的问题
float 和 double 都不能保证精确的存储每一个小数, 浮点数存放的只是一个近似值。
面试题:如何判断一个浮点型变量x的值是否是0?
答:if(|x-0.000001|<=0.000001)–>x=0
2.为什么循环更新的变量不能定义成浮点型?
由于浮点型存储的是一个近似值,所以在进行循环的判断条件的求值的时候,其值会影响判断条件的结果。
比如说:i<=100,如果这个时候i的值是100.000001,于是这一步就没有加入循环,这个时候就会影响整个循环的执行,我们更新部分的值只能是一个整数。
例子:
#include<stdio.h>
int main()
{
float i = 99.9;
printf("%f\n",i);
return 0;
}
/*
输出结果是
99.900002所以浮点型保存的数据是一个近似值。
*/
3.强制类型转换
格式:(数据类型)(表达式)
eg:(float)(5) == 5.00000