Arrays 将字符串数组转换为双精度数组,然后在Swift中计算和
我有一个字符串数组,我想将其转换为Double。然后我想把数组中的每一项加在一起,得到总和 这是我到目前为止的代码,在枚举数组之后,我在将所有数组添加到一起时遇到了问题Arrays 将字符串数组转换为双精度数组,然后在Swift中计算和,arrays,swift,parse-platform,Arrays,Swift,Parse Platform,我有一个字符串数组,我想将其转换为Double。然后我想把数组中的每一项加在一起,得到总和 这是我到目前为止的代码,在枚举数组之后,我在将所有数组添加到一起时遇到了问题 更新:Xcode 10.1•Swift 4.2.1或更高版本 let strings = ["1.9","2.7","3.1","4.5","5.0"] let doubles = strings.compactMap(Doub
更新:Xcode 10.1•Swift 4.2.1或更高版本
let strings = ["1.9","2.7","3.1","4.5","5.0"]
let doubles = strings.compactMap(Double.init)
let sum = doubles.reduce(0, +)
print(sum) // 17.2
如果您不需要中间收集
let sum = strings.reduce(0) { $0 + (Double($1) ?? .zero) }
以下是对Swift 2.0中问题第一部分的回答: 我有一个字符串数组,我想将其转换为Double。然后我想把数组中的每一项加在一起,得到总和 在数组中循环, 对于每个字符串,使用以下命令将字符串转换为双精度:
Double(string:String)
然后把每一个都加到总数上
var strings:[String] = ["1.3", "1", "8", "5", "bad number"]
var tally = 0.0
for eachString in strings{
// Convert each string to Double
if let num = Double(eachString) { //Double(String) returns an optional.
tally += num
} else {
print("Error converting to Double")
}
// Another way to convert if you don't need error handling
// NSString.doubleValue will just return 0.0 on a bad string.
// let num=(eachString as NSString).doubleValue
// tally += num
}
print(tally)
只需map
(迭代并转换数组中的每个值)将数组中的所有值映射为Double
,然后使用起始值0
和闭包(在您的情况下,它只是一个操作符)+
减少所有Double
值
通过递归应用提供的闭包,将元素集合缩减为单个值
只有代码的答案没有多大帮助。请包括一些解释!用Batter添加代码。不是图像。
var strings:[String] = ["1.3", "1", "8", "5", "bad number"]
var tally = 0.0
for eachString in strings{
// Convert each string to Double
if let num = Double(eachString) { //Double(String) returns an optional.
tally += num
} else {
print("Error converting to Double")
}
// Another way to convert if you don't need error handling
// NSString.doubleValue will just return 0.0 on a bad string.
// let num=(eachString as NSString).doubleValue
// tally += num
}
print(tally)
let stringDoubles = ["2.9","3.1","1.7","9.5","5.6"]
let sum = stringDoubles.map { Double($0)! }.reduce(0, combine: +)
print(sum) // "22.8". If start value was, for example, 10, print(sum) => "32.8"