四舍五入时 swift double 它显示不同的数字
When rounding swift double it shows different numbers
当我得到两个数字时,比如 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))!
如果您想通过四舍五入来格式化 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)
当我得到两个数字时,比如 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))!
如果您想通过四舍五入来格式化 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)