Используя десятичные числа
NSDecimalNumber
неизменный подкласс NSNumber
это обеспечивает объектно-ориентированную обертку для того, чтобы сделать основу 10 арифметик. Экземпляр может представлять любое число, которое может быть выражено как mantissa x 10 exponent
где мантисса является десятичным целым числом до 38 цифр долго, и экспонента является целым числом между-128 и 127.
В ходе выполнения арифметики метод может произвести ошибки в вычислениях, такие как деление на нуль. Это может также встретить обстоятельства, где это имеет выбор способов округлить число. Путем действия метода в таких случаях вызывают его «поведением».
Поведение установлено методами в NSDecimalNumberBehaviors
протокол. Каждый NSDecimalNumber
параметр вызывают behavior
требует объекта, соответствующего этому протоколу. Для больше на способах поведения, посмотрите спецификации для NSDecimalNumberBehaviors
протокол и NSDecimalNumberHandler
класс. Также посмотрите defaultBehavior
описание метода.
C интерфейс к десятичным числам
Можно получить доступ к арифметике и округлению методов NSDecimalNumber
через группу функций C:
NSDecimalAdd | Добавляют два десятичных значения. |
NSDecimalCompact | Уплотняет десятичную структуру для эффективности. |
NSDecimalCompare | Сравнивает два десятичных значения. |
NSDecimalCopy | Копирует значение десятичного числа. |
NSDecimalDivide | Делит одно десятичное значение на другого. |
NSDecimalIsNotANumber | Возвращает булевскую переменную, указывающую, содержит ли данное десятичное число верный номер. |
NSDecimalMultiply | Умножает два десятичных числа вместе. |
NSDecimalMultiplyByPowerOf10 | Умножает десятичное число на указанное питание 10. |
NSDecimalNormalize | Нормализует внутренний формат двух десятичных чисел для упрощения более поздних операций. |
NSDecimalPower | Повышает десятичное значение до указанного питания. |
NSDecimalRound | Округляет десятичное значение. |
NSDecimalString | Возвращает строковое представление десятичного значения. |
NSDecimalSubtract | Вычитает одно десятичное значение от другого. |
Вы могли бы рассмотреть интерфейс C, если Вы не должны обрабатывать десятичные числа как объекты — т.е. если Вы не должны хранить их в объектно-ориентированном наборе как экземпляр NSArray
или NSDictionary
. Вы могли бы также рассмотреть интерфейс C при необходимости в максимальной производительности. Интерфейс C быстрее и использует меньше памяти, чем NSDecimalNumber
класс.
При необходимости в переменчивости можно объединить два интерфейса. Используйте функции от интерфейса C и преобразуйте их результаты в экземпляры NSDecimalNumber
.