你不知道的 double 和float类型的值比较问题
请教大神们关于double 和float类型的值比较问题
请看下面:
float testfloat = 2323.1f;
double testdouble = 2323.1;
这时 testfloat==testdouble 的值是FALSE
float testfloat = 2323;
double testdouble = 2323;
这时 testfloat==testdouble 的值是TRUE
这时什么原理?
------解决方案--------------------浮点数内部使用二进制保存的,和十进制转换有误差。编译器负责将十进制的2323.1转换为二进制。
好比用三位小数(十进制)表示1/3和6位小数,分别为0.333和0.333333,当然是不等的。