Moya/Alamofire 请求变量问题
Posted
技术标签:
【中文标题】Moya/Alamofire 请求变量问题【英文标题】:Moya/Alamofire request variables issue 【发布时间】:2020-01-06 11:38:50 【问题描述】:我正在用 Swift 编写一个 iOS 应用,并使用 Moya 作为网络层。
我正在制作一个请求对象以在正文中发送并使用 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: [])
我正在执行 Moya 请求,它在内部使用 Alamofire。
问题:
它发送100.56999999999999
,而不是发送100.57的准确值我的问题是关于以下行:
let jsonString = String(data: jsonData!, encoding: .utf8)
它将数据从 DATA 转换为 STRING。这是将 100.57 转换为 100.56999999999999
如何解决?我是否错误地制作了 DATA 对象?
【问题讨论】:
【参考方案1】:这就是二进制浮点运算的工作原理。 Double
的精度约为 15 位,Float
的精度要低得多。问题不在于代码,而在于您的期望。这在 C、C++、Objective-C、Java 等中也是一样的。还有here你可以找到同样的问题
【讨论】:
以上是关于Moya/Alamofire 请求变量问题的主要内容,如果未能解决你的问题,请参考以下文章