Swift - 将数组中的值转换为双精度或浮点数 [英] Swift - Convert values in array to doubles or floats

查看:246
本文介绍了Swift - 将数组中的值转换为双精度或浮点数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个数组,其值为字符串(但所有的字符串都是1.0,2.0等等)。我正在尝试将这些字符串转换为双精度或浮点数,因此我可以将它们全部加在一起。如何在swift中执行此操作?

解决方案

更新: Xcode 8.3.2•Swift 3.1 / p>

 扩展集合其中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

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

 扩展集合其中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] // [{Some1.5},{Some2.3},{Some3.7},{Some4.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


I have an array with values which are strings (but all the strings are values like 1.0, 2.0, etc). I'm trying to convert those strings into doubles or floats so I can add them all together. How do I do this in swift?

解决方案

update: 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) }
    }
}

usage:

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

If you have an Array of Any? where you need to convert all strings from Optional Any to 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 ?? "") }
    }
}

usage:

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 - 将数组中的值转换为双精度或浮点数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆