3
我想回到Double
中最接近的一半。例如,如果號碼是3.76
,我希望它四捨五入爲4
。另一方面,如果數字是3.74
,我希望它翻轉爲3.5
。這是將Double舍入四捨五入的好實現嗎?
我想出了這個代碼:
extension Double {
func roundToClosestHalf() -> Double {
let upperLimit = ceil(self)
let difference = upperLimit - self
if difference <= 0.25 {
return ceil(self)
} else if difference > 0.25 && difference < 0.75 {
return upperLimit - 0.5
} else {
return floor(self)
}
}
}
是否有更有效的/更好的方式來做到這一點?
let x = 3.21.roundToClosestHalf() // 3
這將返回3.76錯誤值。 'Int.init'截斷;它不輪。 –
返回3.5在操場上,怎麼樣? – hurturk
「如果數字是3.76我希望它被舍入爲4」 –