圆形加倍到0.5

时间:2015-12-25 07:15:38

标签: swift rounding

我有一个结果" 1.444444"我想把这个结果四舍五入到" 1.5"这是我使用的代码:

a.text = String(round(13000 / 9000.0))

但这是围绕" 1.0"我需要回合" 1.5"

和这段代码:

a.text = String(ceil(13000 / 9000.0))

围绕" 2.0"

2 个答案:

答案 0 :(得分:35)

斯威夫特3:

extension Double {
    func round(nearest: Double) -> Double {
        let n = 1/nearest
        let numberToRound = self * n
        return numberToRound.rounded() / n
    }

    func floor(nearest: Double) -> Double {
        let intDiv = Double(Int(self / nearest))
        return intDiv * nearest
    }
}

let num: Double = 4.7
num.round(nearest: 0.5)      // Returns 4.5

let num2: Double = 1.85
num2.floor(nearest: 0.5)     // Returns 1.5

斯威夫特2:

extension Double {
    func roundNearest(nearest: Double) -> Double {
        let n = 1/nearest
        return round(self * n) / n
    }
}

let num: Double = 4.7
num.roundNearest(0.5)      // Returns 4.5

答案 1 :(得分:18)

x = 13000 / 9000.0;

denominator = 2;
a.text = String(round(x*denominator )/denominator );

首先将1.444转换为2.888,然后舍入为3.0,然后除以2得到1.5。在这种情况下,0.5的分母是2(即1/2)。如果要舍入到最接近的四分之一(0.25,0.5,0.75,0.00),则分母= 4

我应该指出,如果分母是2的幂,这是完美的。如果不是,比如说denominator=3,那么你可以得到奇怪的答案,如1.99999999,而不是2的特定值。