Чтение поплавка или двойника из json с помощью swift - PullRequest
0 голосов
/ 29 мая 2019

Я пытаюсь прочитать файл json с помощью swift, и он содержит поле с 0.97.

Если бы я попытался преобразовать поле в число с плавающей точкой, он бы возвратил ноль, но если бы я бросил его в двойное число, он вернул бы правильное значение.Однако единственное различие, которое я смог найти в double и float, заключалось в том, что double - это 64-битная, а float - 32-битная.Мне интересно, что вызывает разницу.

Ответы [ 2 ]

0 голосов
/ 29 мая 2019

Кажется, работает для меня:

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))
0 голосов
/ 29 мая 2019

Это известная проблема, связанная с приведением Any к Float.См. предыдущее обсуждение .Просто приведите к Double.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...