※ 引述《ggegge (Egg)》之铭言:
: 7) LinkedIn
: 我和 LinkedIn 有过一次 phone interview,也是在协作平台上的 coding 问题。
: 比较让我傻眼的是 interviewer 连 floating point 比较时不能用 == 都不知道,
: 我还要和他解释,他一直说 "我在 Java 都直接用 =="...... Recruiter 也是很奇
: 怪,我寄信和他说我 deadline 快到可不可以加速,他竟然要我自己去问 interviewer。
超呛的, "interviewer 连 XXX 都不知道", 这样被电爆你应该不介意吧? XD
我也不知道为什么 floating point 不能用 == 比较. 如果用 == 那么糟的话,
为什么那么多语言不直接把它定义成 undefined behavior?
我是很感冒现在的小朋友遇到浮点数比较都自动 +-0.0001,
可是又说不出来自己在干嘛, 只会说"浮点数计算不准啦"又说不出来是怎样不准.
所有的 IEEE 754 implementation 都保证四则运算跟 sqrt 会做正确的 rounding,
拿 floating point 做 hash table key 的我都看过了,
如果经过正确的数值分析保证计算结果会一样, exact comparison 有何不可?
要我是 interviewer 的话我就考你各种情形下需要多少的 tolerance.
举例来说, (float)((1 << i) + 1) == (float)((1 << i) - 1)
当 i 的范围在多少的时候会是 true 就已经没几个 candidate 弄得清楚了.