在比较两个 double 值时,是否有一种 native 或更简单的方法来进行加减运算。现在我已经做了两次这样的比较,但我觉得应该有一种更简洁的方法来做到这一点。我们在我们的应用程序中做了很多这样的比较,所以我更愿意为此使用最简单和最干净的功能。
let y: Double = 5 // main value
let x: Double = 6 // value that we are comparing y to
if x > y + 2 || x > y - 2 {
//Do something
}
我主要是想检查 x(在本例中为 6)是否在 3 (5-2) 和 7 (5+2) 之间。如果它在两个值之间,我想做一些事情,如果不是,我想做其他事情。
如果可能的话,我想通过使用 2 的值来实现,而不是显式地写出 3 和 7。
最佳答案
检查 x
是否在 y
的 2
范围内:
if abs(x - y) < 2 {
...
}
我觉得单看还是很简单的,但是为了完整起见:
- 这会将测试移动到 0 附近。如果
x
正好等于y
那么x - y
是0
。如果x
比y
小 2,则x - y
为-2
。如果它比x - y
大两倍,则为2
。如果它介于两者之间,那么它就在中间的某个地方。所以有趣的范围是(-2, 2)
; - 应用
abs
既给出了有趣的[0, 2)
范围,又保证没有结果低于0
; - 因此,仅与范围的上限进行比较就足够了。
关于swift - 加减法的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46937260/