Spec-Zone .ru
спецификации, руководства, описания, API

Библиотека Разработчика iOS

Разработчик

Ссылка платформы основы ссылка на протокол NSDecimalNumberBehaviors

Опции
Развертывание Target:

На этой странице
Язык:

NSDecimalNumberBehaviors

Наследование


Не применимый

Соответствует


Не применимый

Оператор импорта


Swift

import Foundation

Objective C

@import Foundation;

Доступность


Доступный в iOS 2.0 и позже.

NSDecimalBehaviors протокол объявляет три метода, управляющие дискреционными аспектами работы с NSDecimalNumber объекты.

scale и roundingMode методы определяют точность NSDecimalNumberвозвращаемые значения и путь, которым те значения должны быть округлены для адаптации той точности. exceptionDuringOperation:error:leftOperand:rightOperand: метод определяет путь в который NSDecimalNumber объект должен обработать различные ошибки в вычислениях.

Для примера класса, принимающего NSDecimalBehaviors протокол, посмотрите спецификацию для NSDecimalNumberHandler.

  • roundingMode () - roundingMode Требуемый

    Возвращает путь который NSDecimalNumber decimalNumberBy... методы вокруг их возвращаемых значений. (требуемый)

    Объявление

    Swift

    func roundingMode() -> NSRoundingMode

    Objective C

    - (NSRoundingMode)roundingMode

    Возвращаемое значение

    Возвращает текущий режим округления. Посмотрите NSRoundingMode для возможных значений.

    Оператор импорта

    Objective C

    @import Foundation;

    Swift

    import Foundation

    Доступность

    Доступный в iOS 2.0 и позже.

  • масштаб () - масштаб Требуемый

    Возвращает число цифр, позволенных после десятичного разделителя. (требуемый)

    Объявление

    Swift

    func scale() -> Int16

    Objective C

    - (short)scale

    Возвращаемое значение

    Число цифр, позволенных после десятичного разделителя.

    Обсуждение

    Этот метод ограничивает точность значений, возвращенных NSDecimalNumber decimalNumberBy... методы. Если scale возвращает отрицательную величину, она влияет на цифры перед десятичным разделителем также. Если scale возвраты NSDecimalNoScale, число цифр неограниченно.

    Принятие этого roundingMode возвраты NSRoundPlain, различные значения scale имейте следующие эффекты на номер 123.456:

    Масштаб

    Возвращаемое значение

    NSDecimalNoScale

    123.456

    2

    123.45

    0

    123

    – 2

    100

    Оператор импорта

    Objective C

    @import Foundation;

    Swift

    import Foundation

    Доступность

    Доступный в iOS 2.0 и позже.

  • Указывает что NSDecimalNumber объект сделает, когда он встретится с ошибкой. (требуемый)

    Объявление

    Swift

    func exceptionDuringOperation(_ method: Selector, error error: NSCalculationError, leftOperand leftOperand: NSDecimalNumber, rightOperand rightOperand: NSDecimalNumber) -> NSDecimalNumber?

    Objective C

    - (NSDecimalNumber *)exceptionDuringOperation:(SEL)method error:(NSCalculationError)error leftOperand:(NSDecimalNumber *)leftOperand rightOperand:(NSDecimalNumber *)rightOperand

    Параметры

    method

    Метод, выполнявшийся, когда произошла ошибка.

    error

    Тип сгенерированной ошибки.

    leftOperand

    Левый операнд.

    rightOperand

    Правильный операнд.

    Обсуждение

    Существует четыре возможных значения для error, описанный в NSCalculationError. Первые три имеют отношение к пределам на возможности NSDecimalNumber представлять десятичные числа. NSDecimalNumber объект может представлять любое число, которое может быть выражено как мантисса x 10^exponent, где мантисса является десятичным целым числом до 38 цифр долго, и экспонента между –256 и 256. Четвертые результаты вызывающей стороны, пытающейся разделиться на 0.

    В реализации exceptionDuringOperation:error:leftOperand:rightOperand:, можно обработать каждую из этих ошибок несколькими способами:

    • Повысьте исключение. Для объяснения исключений посмотрите, что Исключение Программирует Темы.

    • Возвратиться nil. Вызывающий метод возвратит свое значение, как будто не произошла никакая ошибка. Если error NSCalculationLossOfPrecision, method возвратит неточное значение — т.е. один ограниченный к 38 значительным цифрам. Если error NSCalculationUnderflow или NSCalculationOverflow, method возвратится NSDecimalNumber notANumber. Вы не должны возвращаться nil если error NSDivideByZero.

    • Исправьте ошибку и возвратите допустимое NSDecimalNumber объект. Вызывающий метод будет использовать это в качестве своего собственного возвращаемого значения.

    Оператор импорта

    Objective C

    @import Foundation;

    Swift

    import Foundation

    Доступность

    Доступный в iOS 2.0 и позже.

  • Эти константы указывают округление способов поведения.

    Объявление

    Swift

    enum NSRoundingMode : UInt { case RoundPlain case RoundDown case RoundUp case RoundBankers }

    Objective C

    enum { NSRoundPlain, NSRoundDown, NSRoundUp, NSRoundBankers }; typedef NSUInteger NSRoundingMode;

    Константы

    • RoundPlain

      NSRoundPlain

      Вокруг к самому близкому возвращаемому значению; когда поймано на полпути между двумя положительными числами, окружите; когда поймано между двумя отрицательными числами, округлить в меньшую сторону.

      Доступный в iOS 2.0 и позже.

    • RoundDown

      NSRoundDown

      Округлите в меньшую сторону возвращаемые значения.

      Доступный в iOS 2.0 и позже.

    • RoundUp

      NSRoundUp

      Округлите в большую сторону возвращаемые значения.

      Доступный в iOS 2.0 и позже.

    • RoundBankers

      NSRoundBankers

      Вокруг к самому близкому возвращаемому значению; когда на полпути между двумя возможностями, возвратите возможность, последняя цифра которой ровна.

      На практике это означает, что за длительный период числа будут окружаться так часто, как они округляются в меньшую сторону; не будет никакого систематического смещения.

      Доступный в iOS 2.0 и позже.

    Обсуждение

    Округляющийся режим имеет значение только если scale метод устанавливает предел для точности NSDecimalNumber возвращаемые значения. Это не имеет никакого эффекта если scale возвраты NSDecimalNoScale. Принятие этого scale возвраты 1, округляющийся режим имеет следующие эффекты на различные исходные значения:

    Исходное значение

    NSRoundPlain

    NSRoundDown

    NSRoundUp

    NSRoundBankers

    1.24

    1.2

    1.2

    1.3

    1.2

    1.26

    1.3

    1.2

    1.3

    1.3

    1.25

    1.3

    1.2

    1.3

    1.2

    1.35

    1.4

    1.3

    1.4

    1.4

    – 1.35

    – 1.4

    – 1.4

    – 1.3

    – 1.4

    Оператор импорта

    Objective C

    @import Foundation;

    Swift

    import Foundation

    Доступность

    Доступный в iOS 2.0 и позже.

  • Константы ошибки в вычислениях раньше описывали ошибку в exceptionDuringOperation:error:leftOperand:rightOperand:.

    Объявление

    Swift

    enum NSCalculationError : UInt { case NoError case LossOfPrecision case Underflow case Overflow case DivideByZero }

    Objective C

    enum { NSCalculationNoError = 0, NSCalculationLossOfPrecision, NSCalculationUnderflow, NSCalculationOverflow, NSCalculationDivideByZero }; typedef NSUInteger NSCalculationError;

    Константы

    • NoError

      NSCalculationNoError

      Никакая ошибка не произошла.

      Доступный в iOS 2.0 и позже.

    • LossOfPrecision

      NSCalculationLossOfPrecision

      Число не может быть представлено в 38 значительных цифрах.

      Доступный в iOS 2.0 и позже.

    • Overflow

      NSCalculationOverflow

      Число является слишком большим для представления.

      Доступный в iOS 2.0 и позже.

    • Underflow

      NSCalculationUnderflow

      Число является слишком маленьким для представления.

      Доступный в iOS 2.0 и позже.

    • DivideByZero

      NSCalculationDivideByZero

      Вызывающая сторона попыталась разделиться на 0.

      Доступный в iOS 2.0 и позже.

    Оператор импорта

    Objective C

    @import Foundation;

    Swift

    import Foundation

    Доступность

    Доступный в iOS 2.0 и позже.