Moya / Alamofire请求变量问题

问题描述 投票:0回答:1

我正在Swift中编写一个iOS应用,并使用Moya作为网络层。

我正在制作一个要发送到正文中的请求对象,并使用Moya进行API调用:

struct OrderRequest{
var amount:Double
}

let order=OrderRequest(amount:100.57)

我正在将该对象转换为JSONDict,然后转换为数据。

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

我正在执行Moya请求,并且内部正在使用Alamofire

问题:

而不是发送准确值100.57,而是发送100.56999999999999

我的问题是关于下一行:

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

它将数据从DATA转换为STRING。这会将100.57转换为100.56999999999999

如何解决?我是否错误地创建了DATA对象?

ios objective-c swift alamofire moya
1个回答
0
投票

这就是二进制浮点算法的工作原理。 Double的精度约为15位,而Float的精度则低得多。出问题的不是代码,而是您的期望。这与C,C ++,Objective-C,Java等相同]

© www.soinside.com 2019 - 2024. All rights reserved.