Swift中的Float数组中的最大值和最小值

时间:2014-10-27 11:21:15

标签: arrays swift

根据this answer,要获得我们可以做的最大数组:

let nums = [1, 6, 3, 9, 4, 6];
let numMax = nums.reduce(Int.min, { max($0, $1) })

我们如何对Array<Float>执行相同操作,因为min没有maxFloat

let floats: Array<Float> = [2.45, 7.21, 1.35, 10.22, 2.45, 3];

6 个答案:

答案 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_MAXFLT_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