今天面试被问到这个问题,请大佬们解答一下

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