NSNumber算术

Mag*_*ave 6 types nsnumber ios

我想对NSNumbers执行一些简单的算术并保留类型.这可能吗?

例如:

- (NSNumber *)add:(NSNumber *)firstNumber to:(NSNumber *)secondNumber;
Run Code Online (Sandbox Code Playgroud)

是我的方法定义,firstNumber和secondNumber是整数然后我想返回一个整数,它们是两者的整数加法.同样,如果两者都是双打,那么将结果作为双精度返回.

看起来我可以使用[NSNumber objCType]在这个问题中找到的类型(布尔除外):获取NSNumber的类型但是我似乎无法提取这些类型并且在没有大量代码的情况下进行计算以提取值进行计算和返回每种可能类型的结果.

这样做有简短而简洁的方法吗?

ale*_*oot 10

如果你想执行算术,最好的选择是使用NSDecimalNumber.

NSDecimalNumber具有执行算术运算的方法,如:

– decimalNumberByAdding:
– decimalNumberBySubtracting:
– decimalNumberByMultiplyingBy:
– decimalNumberByDividingBy:
– decimalNumberByRaisingToPower:
– decimalNumberByMultiplyingByPowerOf10:
– decimalNumberByAdding:withBehavior:
– decimalNumberBySubtracting:withBehavior:
– decimalNumberByMultiplyingBy:withBehavior:
– decimalNumberByDividingBy:withBehavior:
– decimalNumberByRaisingToPower:withBehavior:
– decimalNumberByMultiplyingByPowerOf10:withBehavior:
Run Code Online (Sandbox Code Playgroud)

并且由于NSDecimalNumber扩展了NSNumber,它也拥有NSNumber的所有方法,所以我认为你可以在你的情况下使用它而没有任何问题.