deepin下gcc使用sublime得出的结果:
#include <stdio.h>
int main(void) {
float num = 1e-6; // 0~0.000001之间
// 当num=1e-6或1e-7时,正确判断它不是0
printf("%f\n", 1e-6); // // 输出0.000001
printf("%f\n", 1e-7); // 输出0.000000
if (num < 1e-7) {
printf("num = %f, num是零\n", num);
} else {
printf("num不是零\n");
}
return 0;
}
1e-7 显示结果:0.000000小数点显示6位
当num<1e-6即num<0.000001,num=1e-6,被误判断是零,显然错误
但当num<1e-7即num<0.0000001, num=1e-6或1e-7,被正确判断不是零,较准确
为什么只能是较准确?因为在num=9e-8时被误判断是零,比它小的数值如1e-8,也会被误判断为零。
因此,0.000000小数点显示6位,这里用1e-7来判断比较合适,
如果需要更高精度,可以用比1e-7更小的值作为判断条件,如num<1e-8或num<1e-9