快速检查最大值并使用

时间:2018-08-23 18:50:21

标签: arrays swift sorting

我有Double array

var array = [2.50, 2.51, 2.41, 2,1, 1.8, 1.3, 2.9, 3.0]

我需要检查最大值

let maxTuple = array.max()
print(maxTuple)

但是它会打印所有数组//2.50,2.51,2.41,2,1,1.8,1.3,2.9,3

然后,如果我得到当前的最大值,我想像这样

var difference = (maxTuple - 2.50)  //0.5
if (difference > 0.1) {
    print("> 0.1")
} else if (difference > 0.2) {
    print("> 0.2")
} else if (difference > 0.3..0.5) {
    print("> 0.3..0.5")   
} else if (difference > 1) {
    print("> 1")
}

我目前如何迅速做到这一点?

2 个答案:

答案 0 :(得分:1)

使用Array的max()函数是正确的。基于您正在查看的输出,也许在操场上,可能会有一些困惑?例如,您应该看到以下内容,其中输出的最后一行是期望的最大值:

enter image description here

由于max()确实产生了一个可选内容(如Optional(3.0)所示),所以无论您最终使用此值如何,都可能希望使用guard中的if let安全地将其解包:

guard let maxValue = array.max() else {
    return
}
//Do something with maxValue

答案 1 :(得分:0)

请注意,maxTuple是可选的,因此您必须先将其展开才能进行任何数学运算:

if let maxTuple = array.max() { 
      // your code
}

顺便说一句0.3..0.5这不是有效范围,检查其中是否包含双精度数的正确方法是:

if 0.3...0.5 ~= difference {
    // your code
}

let array = [2.50, 2.51, 2.41, 2,1, 1.8, 1.3, 2.9, 3.0]

if let maxValue = array.max() {
    print(maxValue)
    let difference = maxValue - 2.5  // 0.5
    switch difference {
    case 0.0...0.1:
        print("greater than 0.0 and less than 0.1")
    case 0.1...0.2:
        print("greater than 0.1 and less than 0.2")
    case 0.2...0.3:
        print("greater than 0.2 and less than 0.3")
    case 0.3...1.0:
        print("greater than 0.3 and less than 1.0") // "greater than 0.3 and less than 1.0\n"
    case 1.0...:
        print("greater than 1.0")
    default:
        print("negative value")
    }
}