Swift – 将数组中的值转换为double或float

我有一个数组是string的值(但所有的string是像1.0,2.0等值)。 我试图将这些string转换成双打或浮动,所以我可以将它们加在一起。 我如何迅速做到这一点?

更新: Xcode 8.3.2•Swift 3.1

extension Collection where Iterator.Element == String { var doubleArray: [Double] { return flatMap{ Double($0) } } var floatArray: [Float] { return flatMap{ Float($0) } } } 

用法:

 let strNumbersArray = ["1.5","2.3","3.7","4.5"] // ["1.5", "2.3", "3.7", "4.5"] let doublesArray = strNumbersArray.doubleArray // [1.5, 2.3, 3.7, 4.5] let floatsArray = strNumbersArray.floatArray // [1.5, 2.3, 3.7, 4.5] let total = doublesArray.reduce(0, +) // 12 let average = total / Double(doublesArray.count) // 3 

如果你有一个任何数组? 您需要将所有string从Optional Any转换为Double:

 extension Collection where Iterator.Element == Any? { var doubleArrayFromStrings: [Double] { return flatMap{ Double($0 as? String ?? "") } } var floatArrayFromStrings: [Float] { return flatMap{ Float($0 as? String ?? "") } } } 

用法:

 let strNumbersArray:[Any?] = ["1.5","2.3","3.7","4.5", nil] // [{Some "1.5"}, {Some "2.3"}, {Some "3.7"}, {Some "4.5"}, nil] let doublesArray = strNumbersArray.doubleArrayFromStrings // [1.5, 2.3, 3.7, 4.5] let floatsArray = strNumbersArray.floatArrayFromStrings // [1.5, 2.3, 3.7, 4.5] let total = doublesArray.reduce(0, +) // 12 let average = total / Double(doublesArray.count) // 3 
 let x = ["1.0", "1.5", "2.0"] print(x.map {Double($0)!}) 

如果你确定所有的数组都是string,你可以直接将你的string转换为float或者double。

 let numberArray:Array = ["1.0","2.0","3.0"] let stringFromArray = numberArray[0] let floatFromString = Float(stringFromArray) let doubleFromString = Double(stringFromArray)