Для форматирования числа с плавающей точкой, округленное до определенного количества цифр, использовать NSNumberFormatter
, как описано другими.
На самом деле вокруг чисел (а не только отображать его с помощью определенного количества знаков после запятой), вы можете использовать NSDecimalNumber
:
let menu = ["Coke": 1.99, "Coffee": 3.99, "Water": 5.99]
let hst = 1.13
let total = NSDecimalNumber(double: menu["Coke"]!)
.decimalNumberByAdding(NSDecimalNumber(double: menu["Coffee"]!))
.decimalNumberByAdding(NSDecimalNumber(double: menu["Water"]!))
.decimalNumberByMultiplyingBy(NSDecimalNumber(double: hst), withBehavior: RoundingBehavior())
let message = "The total for your order is \(total)"
Как правило, только с помощью NSNumberFormatter
адекватен, но если вы собираетесь чтобы сделать любую дальнейшую арифметику с этими округленными числами (например, добавить кучу округлых чисел), вам фактически нужно округлить их, как показано выше, вместо того, чтобы полагаться на форматировщик.
Обратите внимание, выше RoundingBehavior
определяется округлить до двух знаков после запятой:
class RoundingBehavior: NSObject, NSDecimalNumberBehaviors {
func roundingMode() -> NSRoundingMode {
return .RoundPlain
}
func scale() -> Int16 {
return 2
}
func exceptionDuringOperation(operation: Selector, error: NSCalculationError, leftOperand: NSDecimalNumber, rightOperand: NSDecimalNumber?) -> NSDecimalNumber? {
return nil
}
}
Не круглые, использование форматирования – Sulthan
Да, использование форматирования, но может потребоваться округление, а также, если вы будете делать какую-либо дальнейшую арифметику с этим числом. – Rob
@Rob Если вы делаете какую-либо арифметику с деньгами, вы должны использовать 'NSDecimalNumber'. – Sulthan