Arrays 将字符串数组优化为float3数组

Arrays 将字符串数组优化为float3数组,arrays,mapping,swift4,simd,Arrays,Mapping,Swift4,Simd,我试图接受一个字符串文本值,如 var s: String = "0.9 1.2 4.8 0.4 3.2 7.9" 然后把它转换成这样一个float3数组 var f: [float3] = [float3(0.9, 1.2, 4.8), float3(0.4, 3.2, 7.9)] extension String { func toFloat3Array()->[float3]{ var result = [float3]() let po

我试图接受一个字符串文本值,如

var s: String = "0.9 1.2 4.8 0.4 3.2 7.9"
然后把它转换成这样一个float3数组

var f: [float3] = [float3(0.9, 1.2, 4.8), float3(0.4, 3.2, 7.9)]
extension String {
    func toFloat3Array()->[float3]{
        var result = [float3]()

        let pointArray: [Float] = self.split(separator: Character(" ")).map { Float($0) ?? 0.0 }
        for var i in 0..<pointArray.count - 2 {
            result.append(float3(pointArray[i++], pointArray[i++], pointArray[i++]))
        }

        return result
    }
}
到目前为止,我已经为字符串编写了一个扩展函数,如下所示

var f: [float3] = [float3(0.9, 1.2, 4.8), float3(0.4, 3.2, 7.9)]
extension String {
    func toFloat3Array()->[float3]{
        var result = [float3]()

        let pointArray: [Float] = self.split(separator: Character(" ")).map { Float($0) ?? 0.0 }
        for var i in 0..<pointArray.count - 2 {
            result.append(float3(pointArray[i++], pointArray[i++], pointArray[i++]))
        }

        return result
    }
}
扩展字符串{
func toFloat3Array()->[float3]{
变量结果=[float3]()
let pointArray:[Float]=self.split(分隔符:字符(“”)。映射{Float($0)??0.0}

对于0..string->float中的var i,在非常大/小的数字或非常长的小数部分(只有第50位或w/e位将其推到阈值以上,以舍入到下一个可表示的
float
)的情况下,很难实现完全的精度。您是否有任何降低的精度要求,或输入格式简化像x.y这样总是两位数的数字?请参阅以获取想法。相关的Swift问题:请参阅以获取如何实现全精度atof(字符串->浮点)的低级详细信息。这似乎是一个代码审查请求。最好在