我有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")
}
我目前如何迅速做到这一点?
答案 0 :(得分:1)
使用Array的max()
函数是正确的。基于您正在查看的输出,也许在操场上,可能会有一些困惑?例如,您应该看到以下内容,其中输出的最后一行是期望的最大值:
由于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")
}
}