float型变量和“零值”比较的方法
- 浮点数类型 占用存储空间 表述范围
float 4字节 -3.403E38-3.403E38
double 8字节 -1.798E308-1.798E308 - float型变量和“零值”比较的方法: 因为浮点数存在误差,需要定义一个EPS
浮点型变量并不精确,其中EPSINON是允许的误差(即精度),所以不可将float变量用“==”或“!=”与数字比较,应该设法转化成“>=”或“<=”形式。如果写成if (x == 0.0),则是错误的。
因为1.0在计算机中可能存为0.999999或1.00001等,很难恰好是1.0
#include <stdio.h>
int main(int argc, char *argv[])
{
float x = 0.000f;
const float EPSINON = 0.000001;
if (( x >= -EPSINON ) && ( x <= EPSINON ))
{
printf("x 是零\n");
}
return 0;
}