Округление чисел в Swift.
Разработчикам частенько приходится выводить числовые результаты с нужной точностью и форматированием (деньги, мили-километры…). Swift предлагает нам несколько вариантов округления чисел через встроенные функции, а также специальное форматирование с использованием String и спецификаторов.
Попробуем округлить различные типы данных до нужной нам точности.
- Встроенные функции round, floor, ceil
round(1.3) // 1
round(1.5) // 2
round(-1.3) // -1
round(-1.5) // -2
floor(1.3) // 1
floor(1.5) // 1
floor(-1.3) // -2
floor(-1.5) // -2
ceil(1.3) // 2
ceil(1.5) // 2
ceil(-1.3) // -1
ceil(-1.5) // -1
- Использование String и спецификаторов String(format: "specificators", argument).
%[флаги][ширина][.точность][размер]тип
Подробности здесь, а нас интересует как это можно использовать для округления:
String(format: "%.3f", 1.34567) // 1.346
String(format: "%.2f", 1.34567) // 1.35
String(format: "%.1f", 1.34567) // 1.3
String(format: "%.0f", 1.34567) // 1
.3, .2, .1, .0 обозначает точность знаков после запятой
f означает входной тип - Float.
Числа удобно дополнять, например нулями:
String(format: "04d", 10) // 0010
String(format: "The current time is %02d:%02d", 3, 15) // "The current time is 03:15"
“0004d” обозначает дополнить число до длины 4 нулями слева.
Наивная реализация для форматирования времени:
func toTime(hours:UInt, minutes:UInt, seconds:UInt, milliseconds:UInt)-> String{
return String(format: "%02d:%02d:%02d-%02d", hours, minutes, seconds, milliseconds)
}
toTime(hours: 10, minutes: 59, seconds: 3, milliseconds: 5) // 10:59:03-05
- Ссылки
http://www.globalnerdy.com/2016/01/26/better-to-be-roughly-right-than-precisely-wrong-rounding-numbers-with-swift/
Комментариев нет:
Отправить комментарий