将不带分隔符的字符串转换为Double/CLLocationDegrees

问题描述:

我有很多类似“9904962”的字符串&“57053717”我需要将它们转换为CLLocationDegrees以用于创建CLLocation对象。将不带分隔符的字符串转换为Double/CLLocationDegrees

问题是缺少逗号/标点符号。

我所能做的字符计数并设置标点符号这样的:

var coordinateString = "57053717" 

let offset = coordinateString.characters.count > 7 ? 2 : 1 

coordinateString.insert(".", at: coordinateString.index(coordinateString.startIndex, offsetBy: offset)) 

然后我coordinateString将是“57.053717”或“9.904962”

但我不认为这是最好的解决方案,这仅涵盖原始字符串长度大于或小于7个字符的情况。

什么是更好的解决方案?

+0

的位数小数部分数总是6?如果_no_,则不能用给定的字符串区分'57.053717'和'5.7053717'。 – OOPer

+2

如果他们总是有6位数的精度,只需从你的字符串中创建一个双精度值并除以100万 –

+0

快速浏览一下数据,看起来它总是6位精度,但坐标可能是这么长的57.05381847826012。然后除以百万或区分小数部分6个字符将无法正常工作。 – TSkovsgaard

Swift3.0

let numberString: NSMutableString = "57053717" // Convert string to MutableString 

let offset = numberString.characters.count > 7 ? 2 : 1 // finding offset value 

numberString.insert(".", at: offset) // insert "." in offset index 
print(numberString) 

let doubled = numberString.doubleValue // convert to double vale 
print(doubled) 

输出:57.053717