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