Как округлить значение типа Measurement с помощью MeasurementFormatter в Swift? - PullRequest
0 голосов
/ 03 апреля 2020

Мне нужно округлить значение типа Measurement<UnitLength> до ближайшего Int, используя MeasurementFormatter. Учитывая следующий пример:

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

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

Я пытаюсь достичь "493 ярдов" вместо "492,8 ярдов"

Я пытался использовать roundingMode, но ничего не помогало из его режимов:

measurementFormatter.numberFormatter.roundingMode = .up

Любая помощь или идея приветствуется.

Ответы [ 2 ]

2 голосов
/ 03 апреля 2020

Если ярды - это фиксированная единица, которую вы хотите, то вы можете просто конвертировать ее напрямую.

 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)
2 голосов
/ 03 апреля 2020

Вам нужно установить maximumFractionDigits на 0 на NumberFormatter, а также roundingMode на .up, чтобы заставить форматировщик округлять десятичные числа вверх.

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