将货币字符串转换为NSDecimalNumber [英] Converting currency string into NSDecimalNumber

查看:154
本文介绍了将货币字符串转换为NSDecimalNumber的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I'm trying to convert some currency string (e.g., $25,000) into NSDecimalNumber using the following code:

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,但是我在这里设置:

The compiler is complaining about the resulting type of currencyFormatter, is NSNumber instead of NSDecimalNumber but I'm setting this here:

[currencyFormatter setGeneratesDecimalNumber:TRUE];

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

So I'm lost. Any ideas?

推荐答案

NSDecimalNumberNSNumber的子类. NSNumberFormatternumberFromString:方法被声明为返回NSNumber*,因此您需要添加强制类型转换:

NSDecimalNumber is a subclass of NSNumber. The numberFromString: method of NSNumberFormatter is declared to return NSNumber*, so you need to add a cast:

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

由于您已将行为设置为产生十进制数字,所以这将正常工作.

Since you have set the behavior to produce decimal numbers, this will work correctly.

这篇关于将货币字符串转换为NSDecimalNumber的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆