簡體   English   中英

我可以比較兩個字節值基於幾乎等於swift

[英]Can i compare two bytes values on basis of nearly equal to in swift

我在兩個不同的變量中有兩個字節值。 我希望每當值幾乎相等時執行某個動作。 我在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。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM