Swift 中的 double/float 舍入(2 位数)
Round a double/float in Swift (2 digits)
我真的很困惑,因为我试图在 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 位小数的 Float 参数
双精度数和浮点数是二进制浮点数。它们不四舍五入为小数值;他们四舍五入为二进制值。如果您想要十进制值,请使用 Decimal.
这对我的人有用,特别感谢所有回答我的人:
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))
}
}
我真的很困惑,因为我试图在 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 位小数的 Float 参数
双精度数和浮点数是二进制浮点数。它们不四舍五入为小数值;他们四舍五入为二进制值。如果您想要十进制值,请使用 Decimal.
这对我的人有用,特别感谢所有回答我的人:
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))
}
}