今天面试被问到这个问题,请大佬们解答一下
1
choiwanxy 2018-04-28 13:33:08 +08:00
直接大于小于比较不就行了么,double 不能精确等于,但能比大小啊
|
2
dyxLike 2018-04-28 13:39:44 +08:00
a+c>2b ?
|
3
keleilei OP 不能用普通比大小的方式,当时问他怎么处理,他也没说
|
4
pkookp8 2018-04-28 14:11:35 +08:00 via Android
比大小不能用。。。。那相减是否大于 0.00001 这样?
|
6
ballshapesdsd 2018-04-28 14:32:49 +08:00
计算( c-a )( c-b )是不是负数?
|
7
lance6716 2018-04-28 16:13:34 +08:00 via Android
估计是从 IEEE754 里实现一个底层的
|
8
crb912 2018-04-29 21:07:53 +08:00 via Android
我觉得面试官说的"不能用普通的方式比较大小",应该因为浮点数有种特殊的情况:NaN。而且从浮点数的实现而言,似乎也没奇技淫巧可以方便的比较。
假如三个数中间有一个 NaN,你的正常比较方式必然会得到异常。因此要去判断有没有是 NaN,不妨定义一个函数 isnan。 bool isnan(double x) { return x != x } 然后确认没有再比较 |