【发布时间】:2017-08-17 05:19:18
【问题描述】:
我有很多字符串,例如“9904962”和“57053717”,我需要将它们转换为 CLLocationDegrees 以用于创建 CLLocation 对象。
问题是缺少逗号/标点符号。
我可以进行字符计数并像这样设置标点符号:
var coordinateString = "57053717"
let offset = coordinateString.characters.count > 7 ? 2 : 1
coordinateString.insert(".", at: coordinateString.index(coordinateString.startIndex, offsetBy: offset))
那么我的坐标字符串将是“57.053717”或“9.904962”
但我认为这不是最好的解决方案,这仅涵盖原始字符串长于或短于 7 个字符的情况。
什么是更好的解决方案?
【问题讨论】:
-
小数部分的位数总是6?如果 no,则无法用给定的 String 区分
57.053717和5.7053717。 -
如果它们总是有 6 位精度,只需从您的字符串创建一个双精度并除以 100 万
-
快速浏览数据,它似乎总是 6 位数的精度,但坐标可能是这么长的 57.05381847826012。然后除以一百万或用 6 个字符区分小数部分是行不通的。
-
您需要指定这些字符串的格式。只给出了两个样本并说然后除以......将不起作用,人们如何找到正确的解决方案?显示你从哪里得到这些字符串可能会有所帮助。 (例如,来自某些 GPS 设备,或某种定位服务或任何此类信息。)
-
@OOPer 是的,你是对的,我的错误没有给出足够的例子。我想我正在寻找类似内置数字格式化程序的东西,比如用于转换为货币、十进制的那些。不过,我刚刚从服务“WGS84 y 坐标为整数(乘以 1,000,000)”中找到了一些信息,所以除以毕竟 1,000,000 应该可以解决问题 :) 谢谢
标签: swift double cllocation