做正负的最好方法

时间:2017-10-25 16:09:56

标签: swift

比较两个double值时,是否有原生或更简单的方法来做加号或减号。现在我做了两次这样的比较,但我觉得应该有一个更清洁的方法来做到这一点。我们在应用程序中进行了大量的这些比较,因此我更倾向于使用最简单,最干净的功能。

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。

3 个答案:

答案 0 :(得分:3)

检查x是否在2的{​​{1}}范围内:

y

我认为这很容易单独理解,但为了完整起见:

  • 这会将测试移至0左右。如果if abs(x - y) < 2 { ... } 完全等于x,则yx - y。如果0x少两个,则yx - y。如果它大于-2x - y。如果它介于两者之间,那么它就在中间的某个地方。所以有趣的范围是2;
  • 应用(-2, 2)两者都会提供有趣的abs范围,并保证[0, 2)以下没有结果;
  • 因此仅与范围的上端进行比较就足够了。

答案 1 :(得分:1)

您可以使用模式匹配:

if (y-2)...(y+2) ~= x {
    // your code in case the value is within the range
}

答案 2 :(得分:0)

根据您的使用情况,检查X是否在一组数字中可能会有所帮助。