我想将一个 Double
类型的数值四舍五入到最接近的 0.5。例如,如果这个数是 3.76
,我希望它被四舍五入为 4
。另一方面,如果这个数是 3.74
,我希望它被四舍五入为 3.5
。
我想出了以下代码:
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
Int.init
截断而不是四舍五入。 - Rob Napier