将货币字符串转换为NSDecimalNumber

时间:2013-10-23 20:23:39

标签: ios nsnumberformatter nsdecimalnumber

我正在尝试使用以下代码将某些货币字符串(例如,$ 25,000)转换为NSDecimalNumber:

NSNumberFormatter *currencyFormatter = [[NSNumberFormatter alloc] init];
[currencyFormatter setFormatterBehavior:NSNumberFormatterBehavior10_4];
[currencyFormatter setGeneratesDecimalNumbers:TRUE];
[currencyFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];

// textField.text is some currency string (e.g., $25,000)
NSDecimalNumber *decimalNumber = [currencyFormatter numberFromString:textField.text];

编译器抱怨结果类型的currencyFormatter,是NSNumber而不是NSDecimalNumber,但我在这里设置:

[currencyFormatter setGeneratesDecimalNumber:TRUE];

所以我迷路了。有什么想法吗?

1 个答案:

答案 0 :(得分:3)

NSDecimalNumberNSNumber的子类。 numberFromString: NSNumberFormatter方法被声明为返回NSNumber*,因此您需要添加一个演员:

NSDecimalNumber *decimalNumber = (NSDecimalNumber*)[currencyFormatter numberFromString:textField.text];

由于您已设置行为以生成十进制数字,因此这将正常工作。