浮点数在赋值时不是准确按照输入多少就赋值多少,而是按照浮点数精度有效数来赋值的。例如下图,
如何判断两个浮点数是否相等?用减法,两个浮点数相减,然后差的绝对值在精度范围之内。如float,就是 | a - b | <= 1e -6或者 1e -7。
#include<stdio.h>
#include<stdlib.h>
int main()
{
float i =1.456;
if(i - 1.456 >= -1e-6 && i - 1.456 <= 1e-6) //也可以是1e-7; 1e-6精度上更加保守准确,因
//为float有效位数就是6~7位
printf("equal\n");
else
printf("not equal\n");
return 0;
}
IEEE 754标准
符号位 阶码(指数部分) 尾数(小数部分)
S EEEEEEEE MMMM M