如何在 Swift 中使用 MeasurementFormatter 舍入 Measurement 类型的值?

How to round a value of type Measurement using MeasurementFormatter in Swift?

我需要使用 MeasurementFormatter 将类型 Measurement<UnitLength> 的值四舍五入为最接近的 Int。给定以下示例:

let distance = Measurement(value: 0.28, unit: .miles)

let formattedDistance = measurementFormatter.string(from: distance) // "492.8 yd"

我想要实现的是“493 yd”而不是“492.8 yd”

我尝试使用 roundingMode 但对它的任何模式都没有帮助:

measurementFormatter.numberFormatter.roundingMode = .up

如有任何帮助或想法,我们将不胜感激。

您需要将 NumberFormatter 上的 maximumFractionDigits 设置为 0 以及将 roundingMode 设置为 .up 以强制格式化程序舍入十进制数向上。

measurementFormatter.numberFormatter.maximumFractionDigits = 0
measurementFormatter.numberFormatter.roundingMode = .up

如果码是你想要的固定单位,那么你可以直接换算。

 let distance = Measurement(value: 0.28, unit: .miles)
 let roundedYards = distance.converted(to: .yards).value.rounded() // "493 yd", rounded() will round up >= 0.5 and round down < 0.5
 let formattedDistance = Measurement(value: roundedValue, unit: .yards)