将swift double取整时显示不同的数字

时间:2018-12-14 18:09:36

标签: swift double rounding

当我得到两个数字时,例如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))!

1 个答案:

答案 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)