C中float类型与0比较用e-7的原因

最近看到一道面试题,要求写出 bool, int , float, 指针变量 与 0 的判断相等的表示形式。
这里float类型给出的参考答案是:

if (fabs(data) <= 1e-7)

那么问题来了,为什么用 1e-7呢?

通过查阅资料,我们发现,float单精度,在内存中应该是 1 个符号位, 8个指数位 和 23个有效数据位。而 2^23 ~ 10^ 7, 由此得到 1e-7.

参考资料:
1.c中float和double数据与0比较时,为什么一定要用1e-7的格式

2.float类型和0比较大小

你可能感兴趣的:(c,float)