Swift 3.0将String转换为Double返回nil?

gg

尝试做一些简单的事情,但是对我来说根本行不通。

代码:

let long = index["Longitude"] as! String
let lat = index["Latitude"] as! String

print(long as Any)
print(lat as Any)

let doubleLong = Double(long)
print(doubleLong as Any)

调试输出:

-85.1113644443208 
32.880541654362 
nil

^^^为什么这么零?我将添加这是从JSON响应中提取的。也许这与它有关。

苏尔坦

请注意,数据中最有可能存在额外的空间:

print(Double("-85.1113644443208")) // => Optional(-85.111364444320799)
print(Double("-85.1113644443208 ")) // => nil
print(Double(" -85.1113644443208")) // => nil

尝试先修剪空间:

let doubleLong = Double(long.trimmingCharacters(in: CharacterSet.whitespaces))

或使用NumberFormatter进行解析:

let numberFormatter = NumberFormatter()
numberFormatter.numberStyle = .decimal
numberFormatter.locale = Locale(identifier: "en_US_POSIX")

print(numberFormatter.number(from: "-85.1113644443208") as Double?) // => Optional(-85.111364444320799)
print(numberFormatter.number(from: " -85.1113644443208") as Double?) // => Optional(-85.111364444320799)
print(numberFormatter.number(from: "-85.1113644443208 ") as Double?) // => Optional(-85.111364444320799)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章