據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];
據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];
這裏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()
在夫特庫定義爲
/// 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
您可以使用-FLT_MAX
返回的Float
最小幅度,並用於同一目的
let numMax = floats.reduce(-FLT_MAX, { max($0, $1) })
對於Double
陣列可以使用-DBL_MAX
如果你想的Float
使用FLT_MAX
最大幅值。 FLT_MIN
是最小可表示的正浮點數。
只需使用第一個數組元素的初始值:
let numMax = floats.reduce(floats[0], { max($0, $1) })
當然你需要檢查floats
陣列是沒有這樣做之前空。
cadaster指出我們可以使用'FLT_MIN',無論如何謝謝! – gpbl 2014-10-27 11:42:50
Swift 2:
var graphPoints:[Int] = [4, 2, 6, 4, 5, 8, 3]
let maxValue = graphPoints.maxElement()
謝謝,我不知道'FLT_MIN'。 – gpbl 2014-10-27 11:42:06
它應該是'-FLT_MAX',對於Float'.FLT_MIN的最小量值給出指數的最小值。所以我正在改變我的答案 – codester 2014-10-27 11:50:20
我在哪裏可以找到這些變量的文檔? – gpbl 2014-10-27 11:51:59