当我得到两个数字时,例如5.085和70.085。我的代码将第一个数字四舍五入为5.09,但是第二个数字为70.08。由于某些原因,当设置let aux1 = aux * 100
时,该值将变为7008.49999999。有人有解决方案吗?
这是我的代码:
let aux = Double(value)!
let aux1 = aux * 100
let aux2 = (aux1).rounded()
let number = aux2 / 100
return formatter.string(from: NSNumber(value: number))!
答案 0 :(得分:0)
如果要通过四舍五入小数位数格式化Double。尝试:
首先,实现此方法
func formatDouble(_ double: Double, withFractionDigits digits: Int) -> String{
let formatter = NumberFormatter()
formatter.maximumFractionDigits = digits
let string = formatter.string(from: (NSNumber(floatLiteral: double)))!
return string
/*if you want a Double instead of a String, change the return value and uncomment the bellow lines*/
//let number = formatter.number(from: string)!
//return number.doubleValue
}
之后,您不能那样打电话
let roundedNumber = formatDouble(Double(value)!, withFractionDigits: 2)