在 Python 中检查浮点数是否在两个数字之间的优雅方法?

mul*_*rse 0 python floating-point logic numbers

如何检查 x 是否在 a 和 b 之间?

a = 9
b = 7
x = 7.5
Run Code Online (Sandbox Code Playgroud)

我想出了这个:

a < x < b or b < x < a
Run Code Online (Sandbox Code Playgroud)

它似乎通过我所做的一些测试完成了这项工作,但它看起来不可读且令人困惑。还有其他更好的方法吗?

Mar*_*lla 6

怎么用:

min(a, b) < x < max(a, b)
Run Code Online (Sandbox Code Playgroud)


rec*_*nac 6

提出了这四个:

min(a, b) < x < max(a, b)

a < x < b if a < b else b < x < a

(a - x) * (b - x) < 0

not (b < x > a and a < x > b)
Run Code Online (Sandbox Code Playgroud)

但仍然认为你的版本是最好的。

  • @Bathsheba 啊,这可能是一个比我想象的更大的问题。我不太处理浮点值,但一般来说,将算术引入本质上非算术问题似乎只是要求奇怪的极端情况引入错误。 (2认同)