我想对NSNumbers执行一些简单的算术并保留类型.这可能吗?
例如:
- (NSNumber *)add:(NSNumber *)firstNumber to:(NSNumber *)secondNumber;
是我的方法定义,firstNumber和secondNumber是整数然后我想返回一个整数,它们是两者的整数加法.同样,如果两者都是双打,那么将结果作为双精度返回.
看起来我可以使用在这个问题中找到的[NSNumber objCType]来获取类型(布尔除外):get type of NSNumber但是我似乎无法提取那些类型并且在没有大量代码的情况下进行计算来提取值进行计算并返回每种可能类型的结果.
这样做有简短而简洁的方法吗?
解决方法
如果你想进行算术,最好的选择是使用
NSDecimalNumber.
NSDecimalNumber具有执行算术运算的方法,如:
– decimalNumberByAdding: – decimalNumberBySubtracting: – decimalNumberByMultiplyingBy: – decimalNumberByDividingBy: – decimalNumberByRaisingToPower: – decimalNumberByMultiplyingByPowerOf10: – decimalNumberByAdding:withBehavior: – decimalNumberBySubtracting:withBehavior: – decimalNumberByMultiplyingBy:withBehavior: – decimalNumberByDividingBy:withBehavior: – decimalNumberByRaisingToPower:withBehavior: – decimalNumberByMultiplyingByPowerOf10:withBehavior:
并且由于NSDecimalNumber扩展了NSNumber,它也拥有NSNumber的所有方法,所以我认为你可以在你的情况下使用它而没有任何问题.