Swift - 将数组中的值转换为双精度数或浮点数
Swift - Convert values in array to doubles or floats
我有一个数组,其值是字符串(但所有字符串都是 1.0、2.0 等值)。我正在尝试将这些字符串转换为双精度数或浮点数,以便我可以将它们全部加在一起。我如何在 swift 中执行此操作?
let x = ["1.0", "1.5", "2.0"]
print(x.map {Double([=10=])!})
如果你确定你的所有数组都是字符串,你可以直接将你的字符串转换为 float 或 double。
let numberArray:Array = ["1.0","2.0","3.0"]
let stringFromArray = numberArray[0]
let floatFromString = Float(stringFromArray)
let doubleFromString = Double(stringFromArray)
更新:Xcode 8.3.2 • Swift 3.1
extension Collection where Iterator.Element == String {
var doubleArray: [Double] {
return flatMap{ Double([=10=]) }
}
var floatArray: [Float] {
return flatMap{ Float([=10=]) }
}
}
用法:
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
如果你有任意数组?您需要将所有字符串从 Optional Any 转换为 Double:
extension Collection where Iterator.Element == Any? {
var doubleArrayFromStrings: [Double] {
return flatMap{ Double([=12=] as? String ?? "") }
}
var floatArrayFromStrings: [Float] {
return flatMap{ Float([=12=] 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
Swift 5.1
extension Collection where Iterator.Element == String {
var convertToDouble: [Double] {
return compactMap{ Double([=10=]) }
}
var convertToFloat: [Float] {
return compactMap{ Float([=10=]) }
}
}
示例如何使用
let String_Array = ["1.5","2.3","3.7","4.5"] // ["1.5", "2.3", "3.7", "4.5"]
let Double_Array = String_Array.convertToDouble // [1.5, 2.3, 3.7, 4.5]
let Float_Array = String_Array.convertToFloat. // [1.5, 2.3, 3.7, 4.5]
或者你可以这样做
let numArray = ["1.0","2.0","3.0"]
let stringFromArray = numberArray[0]
let floatFromString = Float(stringFromArray)
let doubleFromString = Double(stringFromArray)
我有一个数组,其值是字符串(但所有字符串都是 1.0、2.0 等值)。我正在尝试将这些字符串转换为双精度数或浮点数,以便我可以将它们全部加在一起。我如何在 swift 中执行此操作?
let x = ["1.0", "1.5", "2.0"]
print(x.map {Double([=10=])!})
如果你确定你的所有数组都是字符串,你可以直接将你的字符串转换为 float 或 double。
let numberArray:Array = ["1.0","2.0","3.0"]
let stringFromArray = numberArray[0]
let floatFromString = Float(stringFromArray)
let doubleFromString = Double(stringFromArray)
更新:Xcode 8.3.2 • Swift 3.1
extension Collection where Iterator.Element == String {
var doubleArray: [Double] {
return flatMap{ Double([=10=]) }
}
var floatArray: [Float] {
return flatMap{ Float([=10=]) }
}
}
用法:
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
如果你有任意数组?您需要将所有字符串从 Optional Any 转换为 Double:
extension Collection where Iterator.Element == Any? {
var doubleArrayFromStrings: [Double] {
return flatMap{ Double([=12=] as? String ?? "") }
}
var floatArrayFromStrings: [Float] {
return flatMap{ Float([=12=] 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
Swift 5.1
extension Collection where Iterator.Element == String {
var convertToDouble: [Double] {
return compactMap{ Double([=10=]) }
}
var convertToFloat: [Float] {
return compactMap{ Float([=10=]) }
}
}
示例如何使用
let String_Array = ["1.5","2.3","3.7","4.5"] // ["1.5", "2.3", "3.7", "4.5"]
let Double_Array = String_Array.convertToDouble // [1.5, 2.3, 3.7, 4.5]
let Float_Array = String_Array.convertToFloat. // [1.5, 2.3, 3.7, 4.5]
或者你可以这样做
let numArray = ["1.0","2.0","3.0"]
let stringFromArray = numberArray[0]
let floatFromString = Float(stringFromArray)
let doubleFromString = Double(stringFromArray)