【问题标题】:Convert string without separator to Double/CLLocationDegrees将不带分隔符的字符串转换为 Double/CLLocationDegrees
【发布时间】: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.0537175.7053717
  • 如果它们总是有 6 位精度,只需从您的字符串创建一个双精度并除以 100 万
  • 快速浏览数据,它似乎总是 6 位数的精度,但坐标可能是这么长的 57.05381847826012。然后除以一百万或用 6 个字符区分小数部分是行不通的。
  • 需要指定这些字符串的格式。只给出了两个样本并说然后除以......将不起作用,人们如何找到正确的解决方案?显示你从哪里得到这些字符串可能会有所帮助。 (例如,来自某些 GPS 设备,或某种定位服务或任何此类信息。)
  • @OOPer 是的,你是对的,我的错误没有给出足够的例子。我想我正在寻找类似内置数字格式化程序的东西,比如用于转换为货币、十进制的那些。不过,我刚刚从服务“WGS84 y 坐标为整数(乘以 1,000,000)”中找到了一些信息,所以除以毕竟 1,000,000 应该可以解决问题 :) 谢谢

标签: swift double cllocation


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-09
    • 1970-01-01
    • 2010-10-19
    • 2019-11-28
    • 2019-08-23
    相关资源
    最近更新 更多