将不带分隔符的字符串转换为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个字符的情况。
什么是更好的解决方案?
答
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
的位数小数部分数总是6?如果_no_,则不能用给定的字符串区分'57.053717'和'5.7053717'。 – OOPer
如果他们总是有6位数的精度,只需从你的字符串中创建一个双精度值并除以100万 –
快速浏览一下数据,看起来它总是6位精度,但坐标可能是这么长的57.05381847826012。然后除以百万或区分小数部分6个字符将无法正常工作。 – TSkovsgaard