2013-08-08 2 views
1

В настоящее время я извлекаю данные из веб-сервиса и заполняю данные в пользовательский объект.Правильный способ использования NSDecimalNumber как свойств пользовательского класса

Я храню десятичные, такие как 4.56 и т.д.

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

Я в принципе хочу, чтобы создать поведение, как, например, в ObjectiveC

private decimal thirtyYear; 

public decimal getThirtyYear(){ 
    return thirtyYear/100.0; 
} 

public void setThrityYear(decimal rate){ 
    thirtyYear = rate; 
} 

Так, если мое thirtyYear свойство быть NSDecimal или NSDecimalNumber. Кроме того, при выполнении деления внутри метода getThirtyYear() следует использовать NSDecimalNumber для арифметики.

ответ

0

Вопрос № 1: Должно ли мое свойство 30Year быть NSDecimal или NSDecimalNumber?

Как вы сказали, если вы имеете дело с любыми финансовыми расчетами, всегда используйте NSDecimalNumber, а NSDecimalNumber обеспечивает предсказуемое поведение округления и точность при выполнении вычислений базы 10.

Если вы хотите более подробную информацию, это из документации Apple, непосредственно:

NSDecimalNumber является непреложным подкласс NSNumber, который обеспечивает объектно-ориентированную обертку для ведения базы-10 арифметики. Экземпляр может представлять любое число, которое может быть выражено в виде мантиссы х 10 показателя , где мантисса представляет собой десятичное число длиной до 38 цифр, и показателем представляет собой целое число от -128 до 127.

Сейчас в отношении к NSDecimal, это C-структура и не так просто работать с Objective C. Как указано выше, здесь возникает объект NSDecimalNumber, в котором создается работа с объектно-ориентированными языками. Короче, NSDecimalNumber - это путь. С ним легче работать.

Вопрос №2: При делении внутри метода getThirtyYear() следует использовать NSDecimalNumber для арифметики?

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

Поскольку вы будете использовать NSDecimalNumber, я предлагаю проверить NSDecimalNumber Class Reference, потому что класс имеет число (без каламбура) полезных методов. Надеюсь это поможет.