Проблема с переменными запроса Moya / Alamofire - PullRequest
0 голосов
/ 06 января 2020

Я пишу iOS приложение в Swift и использую Моя в качестве сетевого уровня.

Я делаю объект запроса для отправки в теле и использую Moya для выполнения вызова API:

struct OrderRequest{
var amount:Double
}

let order=OrderRequest(amount:100.57)

Я преобразую этот объект в JSONDict, а затем в Data.

if let json = JSONDict(from: order) {
  let data = try JSONSerialization.data(withJSONObject: json, options: [])
}

I Я выполняю запрос Мойя и внутренне использую Alamofire .

ВЫПУСК:

Вместо отправки точного значения 100.57 , он отправляет 100.56999999999999

Мой вопрос по поводу строки ниже :

let jsonString = String(data: jsonData!, encoding: .utf8)

Преобразует данные из данных в STRING. Это преобразует 100,57 в 100,56999999999999

Как это можно решить? Я неправильно делаю объект DATA?

1 Ответ

1 голос
/ 06 января 2020

Так работает двоичная арифметика с плавающей точкой c. Точность около 15 цифр для Double и намного меньше для Float. Что не так, не код, но ваши ожидания. И это то же самое в C, C ++, Objective- C, Java и так далее. Также здесь вы можете найти ту же проблему

...