如何在 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)
我需要使用 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)