我有这个信息。
let params2: [String: AnyObject] = [
"app_token": myapptoken,
"member_access_token": accessToken!,
"pay_process": 0,
"payamount_credit": 9.87 //hardcode
]
当打印params2
The result is
[“app_token”:myapptoken,“member_access_token”:accessToken,“payamount_credit”:9.869999999999999,“pay_process”:0]
"payamount_credit": 9.87
现在是 "payamount_credit": 9.869999999999999
我已经尝试了所有存在的方式,但表现相同。
NSString(格式: "%.\2f", 9.87)
双(round(1000*9.87)/1000)
最奇怪的是,只有这个特定数字 (9.87) 才会发生,这很神秘。
Playground Screen.
最佳答案
问题出在 numeric precission 中,简单地说,有些数字不能定义为 Double
而不会丢失精度。
相反,您应该使用 NSDecimalNumber :
let num = NSDecimalNumber(string: "9.87")
关于ios - swift 解决问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37794622/