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(字符串->浮点)的低级详细信息。这似乎是一个代码审查请求。最好在