浮点数比较(一直没解决,心里好难受)
下面的程序为什么输入0.000001会显示不相等,虽然我知道浮点数比较大小会有很多问题,但0.000001应该在内存中能精确存储啊请哪位朋友帮解释一下,请从内部存储方式来讲下面的程序为什么会执行出这样的结果
以下是在下的认识:
在IEEE标准中.浮点以23位表示小数,这样的精确度应为0.00000000000000000000001(二进制),共22个0,换算为十进制大约为
0.000000119(十成制),6个0. 以此判断,十进制转为二进制的精确度只能保证在0.000001,5个零,那我输入0.000001应该能精确存储,怎么还会出现下面的问题呢??
#include"stdio.h"
main()
{
float i;
scanf("%f",&i);
if(i == 0.000001)
printf("It's equate to 0.000001");
else
printf("It's not equate to 0.000001");
}