关于blog上对 float的许多讨论,这个函数不对,那个运算出错。
其实原因不在这里,根源是计算机没有向你保证你看到的就是真实的,都是一厢情愿而已。
废话不说。下面是测试,一看就明白。再不明白的看看 float 是如何储存的。
#include <stdio.h> int main(void) { double b = 0.3; float a = 0.3f; printf("%.20g ",a); printf("%.20g ",b); b = a; printf("%.20g ",b); if (0.3 == a) printf("0.3 == 0.3f "); if (0.3f == a) printf("0.3f == 0.3f "); return 0; }
别跟我提编译器,编你妹。
为何 %lf , %f 输出是 0.3 ? 我就不说,看看 cXX 标准什么的吧。