我无法想象如何从NSDecimalnumber获取积分和十进制值.
例如,如果我有10,5,如何得到10和5?
如果我有10和5,如何回到10,5?
嗯好的,那看起来更好!
但是我有关于丢失小数的担心.
这是一个国际化的应用程序.例如,如果用户设置价格"124,2356",我想加载并保存确切的数字.
嗯,这是方法,但不尊重小数位数.如果有一种方法可以从我当前设置的本地知道.
这是因为代表货币价值......
我使用2作为比例,因为你说这是货币,但你可以选择使用另一个舍入比例.我也忽略了舍入可能带来的任何异常,因为这是一个非常简单的例子.
NSDecimalNumberHandler *behavior = [NSDecimalNumberHandler decimalNumberHandlerWithRoundingMode:NSRoundDown scale:0 raiseOnExactness:NO raiseOnOverflow:NO raiseOnUnderflow:NO raiseOnDivideByZero:NO]; NSDecimalNumber *price = /* eg. 10.5 */; NSDecimalNumber *dollars = [price decimalNumberByRoundingAccordingToBehavior: behavior]; NSDecimalNumber *cents = [price decimalNumberBySubtracting: dollars];
这将分别给出10和0.5 in dollars
和cents
变量.如果你想要整数,你可以使用这个方法乘以cents
10的幂.
cents = [cents decimalNumberByMultiplyingByPowerOf10: 2];
这将反过来乘以cents
100,给你10和5 in dollars
和cents
.你也应该知道你可以使用10的负幂来划分.
所以,
cents = [cents decimalNumberByMultiplyingByPowerOf10: -2];
会撤消最后一种方法.