我试图用swift读取json文件,它包含0.97的字段。
如果我尝试将字段强制转换为浮点型,则将返回nil,但是如果我将其强制转换为双精度型,则将返回正确的值。但是,我可以在double和float上找到的唯一区别是double是64位,而float是32位。我想知道是什么导致了差异。
答案 0 :(得分:0)
一个已知的问题是,将Any转换为Float会遇到问题。参见previous discussion。只需转换为Double。
答案 1 :(得分:0)
似乎为我工作:
var jsonString = "{\n" +
"\"float\":0.97,\n" +
"\"double\":0.97\n" +
"}\n"
struct Outcome: Decodable {
let float: Float?
let double: Double?
}
let data = jsonString.data(using: .utf8)!
let outcome = try JSONDecoder().decode(Outcome.self, from: data)
print(outcome) // Outcome(float: Optional(0.97), double: Optional(0.97))