我正在尝试使用以下代码将一些货币字符串(例如$ 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];
所以我迷路了。有任何想法吗?
最佳答案
NSDecimalNumber
是NSNumber
的子类。声明numberFromString:
的NSNumberFormatter
方法返回NSNumber*
,因此您需要添加强制类型转换:
NSDecimalNumber *decimalNumber = (NSDecimalNumber*)[currencyFormatter numberFromString:textField.text];
由于您已将行为设置为产生十进制数,因此将可以正常工作。
关于ios - 将货币字符串转换为NSDecimalNumber,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19551568/