最近看到一道面试题,要求写出 bool, int , float, 指针变量 与 0 的判断相等的表示形式。
这里float类型给出的参考答案是:
if (fabs(data) <= 1e-7)
那么问题来了,为什么用 1e-7呢?
通过查阅资料,我们发现,float单精度,在内存中应该是 1 个符号位, 8个指数位 和 23个有效数据位。而 2^23 ~ 10^ 7, 由此得到 1e-7.
最近看到一道面试题,要求写出 bool, int , float, 指针变量 与 0 的判断相等的表示形式。
这里float类型给出的参考答案是:
if (fabs(data) <= 1e-7)
那么问题来了,为什么用 1e-7呢?
通过查阅资料,我们发现,float单精度,在内存中应该是 1 个符号位, 8个指数位 和 23个有效数据位。而 2^23 ~ 10^ 7, 由此得到 1e-7.