我在两个不同的变量中有两个字节值。我希望每当值几乎相等时执行某个动作。我在swift中有任何方法,我可以对变量值执行任何操作,几乎等于。如果推荐我一些代码,教程或文章来实现这一目标。我是新手,所以请避免投票。
let string1 = "Hello World"
let string2 = "Hello"
let byteArrayOfString1: [UInt8] = string1.utf8.map{UInt8($0)} //Converting HELLO WORLD into Byte Type Array
let byteArrayOfString2: [UInt8] = string2.utf8.map{UInt8($0)} //Converting HELLO into Byte Type Array
if byteArrayOfString1 == byteArrayOfString2 {
print("Match")
}else {
print("Not Match")
}
如需更多帮助,请访问https://medium.com/@gorjanshukov/working-with-bytes-in-ios-swift-4-de316a389a0c
确切地说,我不这么认为有这样的方法来比较近似值,但如果你讨论你想要做什么,我们可以找到一个更好的替代解决方案。
这是解决方案:
func nearlyEqual(a: Float, b: Float, epsilon: Float) -> Bool {
let absA = abs(a)
let absB = abs(b)
let diff = abs(a - b)
if a == b {
return true
} else if (a == 0 || b == 0 || absA + absB < Float.leastNonzeroMagnitude) {
// a or b is zero or both are extremely close to it
// relative error is less meaningful here
return diff < (epsilon * Float.leastNonzeroMagnitude)
} else {
return diff / (absA + absB) < epsilon
}
}
然后你就可以使用它:
print(nearlyEqual(a: 1.2, b: 1.4, epsilon: 0.2))
这将返回true。