NSNumber
полезно для хранения в NSArray
или NSDictionary
или в хранилище базовых данных.
Вы не хотите использовать NSNumber
для арифметики, только для использования с базовыми или базовыми классами данных, когда вам нужно где-то хранить это число.
Это связано с тем, что при выполнении арифметических операций вам придется постоянно конвертировать между NSNumber
и примитивными типами, такими как int
, double
, long
и т. Д. Выполните операции с примитивными типами с желаемой точностью, а затем создайте экземпляр NSNumber
, если он вам действительно нужен.
Тем не менее, довольно просто использовать математическую библиотеку C в любом приложении Cocoa / Cocoa Touch:
#import <math.h>
...
double _param = 7.389;
NSNumber *_result = [NSNumber numberWithDouble:log(_param)];
Это та же история для NSDecimalNumber
, который является подклассом NSNumber
:
Вы можете рассмотреть интерфейс C, если вам не нужно обрабатывать десятичные числа как объекты - то есть, если вам не нужно хранить их в объектно-ориентированной коллекции, такой как экземпляр NSArray или NSDictionary. Вы также можете рассмотреть интерфейс C, если вам нужна максимальная эффективность. Интерфейс C работает быстрее и использует меньше памяти, чем класс NSDecimalNumber.