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
显示0.599999998
时显示为零。为什么施法Float
为零?你们有一些方法可以让我得到正确的结果吗?
答案 0 :(得分:1)
0.6
是Double
字面值。因此,您无法将其投射到Float
(您需要转换它)。
请改为尝试:
let f = Float(json["progress"] as! Double)
或者,如果您不确定此AnyObject
包含的数字类型,则更安全的方法是:
let f = (json["progress"] as! NSNumber).floatValue
当然,如果json值缺失或您错误判断了预期的类型,那么上面的as!
会崩溃 hard 。如果您不这样做,请使用as?
运算符:)
投射速成课程。将已知的Double
值转换为Float
时,编译器会为此提供一个很好的提示:
let d = 0.6
let f = d as? Float
警告:来自' Double'不相关的类型' Float'总是失败