"% .2f" округляет мой номер вместо выреза - PullRequest
0 голосов
/ 10 мая 2018

У меня есть следующий номер

+7,9775609756097534

и я использую код ниже, чтобы показать только два десятичных знака

let formatted = String(format: "Angle: %.2f", angle)

проблема в том, что результат:

7,98

вместо

7,97

Ответы [ 2 ]

0 голосов
/ 10 мая 2018

В качестве альтернативы, вы можете делать битовые строки

let numberInFloat:Float = 7.9775609756097534
let numberInString: String = String(format: "%f", numberInFloat)

let numberParts = numberInString.components(separatedBy: ".")

print(String(format: "Output: %@.%@", String(numberParts[0]), String(numberParts[1].prefix(2))))

Вывод: 7,97

0 голосов
/ 10 мая 2018

Для таких случаев, как ваш, мы используем NumberFormatter. Это класс, предназначенный для того, чтобы делать то, что вам нужно, и даже больше. Для вашего случая должно быть достаточно использовать следующее:

let numberFormatter = NumberFormatter()
numberFormatter.roundingMode = .down
numberFormatter.minimumFractionDigits = 2
numberFormatter.maximumFractionDigits = 2
numberFormatter.string(from: 1.236)

Теперь блокировка цифр дроби равна 2. При увеличении минимальных цифр дроби можно добавить еще «0», как в 0.10, может стать 0.100. Максимальные дробные цифры просто ограничивают, до какой точки будет отображаться число.

Есть и другие опции, такие как 1234567.89 показывать как 1.234.567,89, что очень удобно для пользователей, привыкших к такому форматированию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...