let json = [
"left" : 18,
"deadline" : "May 10",
"progress" : 0.6
] as [String: AnyObject]
let ss = json["progress"] as? Float
let sss = json["progress"] as? Double
print("ss = \(ss)\n sss = \(sss)")
我不知道为什么ss
显示零而sss
shows 0.599999998
。为什么投射到Float
得到零?你们有一些方法可以让我得到正确的结果吗?
The 0.6
is a Double
字面值。因此,您不能将其投射到Float
(你需要convert it).
试试这个:
let f = Float(json["progress"] as! Double)
或者,如果您不确定这是什么类型的数字AnyObject
成立,更安全的方法是:
let f = (json["progress"] as! NSNumber).floatValue
当然,那些as!
上面会崩溃hard如果 json 值丢失or你误判了预期的类型。使用as?
如果您有其他感觉,请改为运算符:)
选角速成班。当施放已知的Double
值对一个Float
,编译器给了我们一个很好的提示:
let d = 0.6
let f = d as? Float
警告:从“Double”转换为不相关类型“Float”总是失败
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)