减去货币 - NSNumber
Subtracting Currency - NSNumber
我正在处理需要相互减去的货币值。我读到 NSNumber 很适合处理货币,但是我无法减去两个 NSNumber。有没有更好的处理货币的方法,还是我遗漏了一些小东西?
NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setNumberStyle: NSNumberFormatterCurrencyStyle];
NSNumber* number = [numberFormatter numberFromString:bDict[@"booking_deposit"]];
if (!number) {
[numberFormatter setNumberStyle: NSNumberFormatterDecimalStyle];
number = [numberFormatter numberFromString:bDict[@"booking_deposit"]];
}
NSNumber* number2 = [numberFormatter numberFromString:bDict[@"booking_total"]];
if (!number2) {
[numberFormatter setNumberStyle: NSNumberFormatterDecimalStyle];
number2 = [numberFormatter numberFromString:bDict[@"booking_total"]];
}
NSLog(@"result %@",number2 - number);//warning here
这是警告:
Arithmetic on pointer to interface 'NSNumber', which is not a constant size for this architecture and platform
你不能减去对象,这就是你得到错误的原因。
您可以使用 NSDecimalNumber
而不是 NSNumber
然后 API 用于 decimalNumberBySubtracting:
。
或者,使用 double
。
要点是使用允许您感兴趣的精度级别的数据类型,并且通常与您要进行的计算的数量和类型有关。
NSNumberFormatter
确实提供 generatesDecimalNumbers
(它曾经有一个错误,不确定是否仍然存在,值得研究)。
您需要获取存储在 NSNumber 中的值的类型以执行算术运算。
NSLog(@"result = %f", [number2 doubleValue] - [number doubleValue])
我正在处理需要相互减去的货币值。我读到 NSNumber 很适合处理货币,但是我无法减去两个 NSNumber。有没有更好的处理货币的方法,还是我遗漏了一些小东西?
NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setNumberStyle: NSNumberFormatterCurrencyStyle];
NSNumber* number = [numberFormatter numberFromString:bDict[@"booking_deposit"]];
if (!number) {
[numberFormatter setNumberStyle: NSNumberFormatterDecimalStyle];
number = [numberFormatter numberFromString:bDict[@"booking_deposit"]];
}
NSNumber* number2 = [numberFormatter numberFromString:bDict[@"booking_total"]];
if (!number2) {
[numberFormatter setNumberStyle: NSNumberFormatterDecimalStyle];
number2 = [numberFormatter numberFromString:bDict[@"booking_total"]];
}
NSLog(@"result %@",number2 - number);//warning here
这是警告:
Arithmetic on pointer to interface 'NSNumber', which is not a constant size for this architecture and platform
你不能减去对象,这就是你得到错误的原因。
您可以使用 NSDecimalNumber
而不是 NSNumber
然后 API 用于 decimalNumberBySubtracting:
。
或者,使用 double
。
要点是使用允许您感兴趣的精度级别的数据类型,并且通常与您要进行的计算的数量和类型有关。
NSNumberFormatter
确实提供 generatesDecimalNumbers
(它曾经有一个错误,不确定是否仍然存在,值得研究)。
您需要获取存储在 NSNumber 中的值的类型以执行算术运算。
NSLog(@"result = %f", [number2 doubleValue] - [number doubleValue])