当四舍五入swift double时,它显示不同的数字
当我得到两个数字时,比如5.085和70.085。我的代码将第一个数字舍入为5.09,但第二个数字舍入为70.08。出于某种原因,在进行当四舍五入swift double时,它显示不同的数字,swift,double,rounding,Swift,Double,Rounding,当我得到两个数字时,比如5.085和70.085。我的代码将第一个数字舍入为5.09,但第二个数字舍入为70.08。出于某种原因,在进行时,让aux1=aux*100的值变为7008.4999999。有人有解决办法吗 这是我的密码: let aux = Double(value)! let aux1 = aux * 100 let aux2 = (aux1).rounded() let number = aux2 / 100
时,让aux1=aux*100
的值变为7008.4999999。有人有解决办法吗
这是我的密码:
let aux = Double(value)!
let aux1 = aux * 100
let aux2 = (aux1).rounded()
let number = aux2 / 100
return formatter.string(from: NSNumber(value: number))!
如果要通过舍入分数位数来设置双精度的格式。不要尝试: 首先,实现这个方法
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)
我尝试过这种方法,但没有成功,所以我把
formatter.roundingMode=.halfUp
放在这里,现在两种方法都起作用了,谢谢如果你早些时候明确表示你想要的是取整,也许我会想到这个建议。但我希望它能帮助你找到解决办法。