根据this answer,要获得我们可以做的最大数组:
let nums = [1, 6, 3, 9, 4, 6];
let numMax = nums.reduce(Int.min, { max($0, $1) })
我们如何对Array<Float>
执行相同操作,因为min
没有max
和Float
?
let floats: Array<Float> = [2.45, 7.21, 1.35, 10.22, 2.45, 3];
答案 0 :(得分:8)
此处给出的解决方案https://stackoverflow.com/a/24161004/1187415适用于 对于所有可比较元素序列,因此对于一系列浮点数:
let floats: Array<Float> = [2.45, 7.21, 1.35, 10.22, 2.45, 3]
let numMax = maxElement(floats)
maxElement()
在Swift库中定义为
/// Returns the maximum element in `elements`. Requires:
/// `elements` is non-empty. O(countElements(elements))
func maxElement<R : SequenceType where R.Generator.Element : Comparable>(elements: R) -> R.Generator.Element
答案 1 :(得分:6)
只需使用第一个数组元素作为初始值:
let numMax = floats.reduce(floats[0], { max($0, $1) })
但是当然你需要先检查floats
数组是否为空。
答案 2 :(得分:3)
您可以使用-FLT_MAX
返回Float
的最小幅度并用于相同目的
let numMax = floats.reduce(-FLT_MAX, { max($0, $1) })
对于Double
数组,您可以使用-DBL_MAX
如果您希望Float
的最大幅度值使用FLT_MAX
。FLT_MIN
是最小可表示的正浮点数。
答案 3 :(得分:1)
斯威夫特2:
var graphPoints:[Int] = [4, 2, 6, 4, 5, 8, 3]
let maxValue = graphPoints.maxElement()
答案 4 :(得分:1)
Swift 4具有.max()
的{{1}}方法。
示例:
Array<Float>
注意:let floats: Array<Float> = [2.45, 7.21, 1.35, 10.22, 2.45, 3]
let max = floats.max()
返回一个可选值,因此有可能返回nil。
答案 5 :(得分:0)
在 Swift 中测试 >= 5.0
let numbers = [12.9, 2.7, 3.7, 4, 5, 4, 12.8]
print(numbers.max() ?? 0) // Output 12.9
print(numbers.min() ?? 0) // Output 2.7