我真的很困惑,因为我试图在Swift中舍入一个数字,如果我在操场上运行我的代码,我的数字会被完美地舍入,但如果我在Alamofire中使用“参数”发送它,我的数字就不会舍入……你对这个问题有什么想法吗?以下是我对数字进行舍入的尝试:
尝试1
var orderTotal = 0.0
orderTotal = Double(total * 100).rounded()/100
let parameters: [String: Any?] = [
"Total": orderTotal
]
尝试2
let parameters: [String: Any?] = [
"Total": total.rounded(digits: 2)
]
extension Double {
func rounded(digits: Int) -> Double {
let multiplier = pow(10.0, Double(digits))
return (self * multiplier).rounded() / multiplier
}
}
尝试3
let parameters: [String: Any?] = [
"Total": Float(String(format:"%.2f", (total)))
]
PS。"total“为浮点型参数,小数为6-8位
发布于 2021-01-29 02:54:50
双精度和浮点数是二进制浮点数。它们不四舍五入为十进制值;它们四舍五入为二进制值。如果需要十进制值,请使用Decimal。
发布于 2021-01-29 03:59:50
这对我的人很有效,特别感谢所有回复我的人:
var orderTotal = NSDecimalNumber(string: String(total))
orderTotal = orderTotal.round(2)
extension NSDecimalNumber {
public func round(_ decimals:Int) -> NSDecimalNumber {
return self.rounding(accordingToBehavior: NSDecimalNumberHandler(roundingMode: .plain,
scale: Int16(decimals),raiseOnExactness: false,
raiseOnOverflow: false,raiseOnUnderflow: false,
raiseOnDivideByZero: false))
}
}
https://stackoverflow.com/questions/65943363
复制相似问题