使用NSNumberFormatter在输出UILabel中格式化货币

6
NSNumberFormatter * fmt;
NSNumber          * n;

fmt = [ [ NSNumberFormatter alloc ] init ];
n   = [ NSNumber numberWithFloat: 10 ];

[ fmt setFormatterBehavior: NSNumberFormatterBehavior10_4 ];
[ fmt setCurrencySymbol: @"$" ];
[ fmt setNumberStyle: NSNumberFormatterCurrencyStyle ];

 // NSLog( @"%@", [ fmt stringFromNumber: n ];

[ fmt release ]


-(IBAction)buttonPressed1:(id)sender
 {
double currency = [Amount1.text doubleValue] + [Amount2.text doubleValue]; 

SumCurrency.text = [NSString stringWithFormat:@"%0.0f", currency];


 }

如何将SumCurrency.text格式化为1,999而不是1999?

请帮忙,我刚开始学习Objective-C,但我的项目几乎95%都在界面构建器中。

我只需要上面的代码实现的帮助...请帮帮我,我在这方面遇到了很多困难。

谢谢, 新手。


2
你在顶部提供的代码确实会打印“$1,999”(如果将n更改为1999)。为什么你的buttonPressed1方法中没有使用格式化程序? - nall
3个回答

13

我得到了答案... 但对于任何人的未来参考

-(IBAction)buttonPressed1:(id)sender
{
    double currency = [Amount1.text doubleValue] + [Amount2.text doubleValue]; 
    NSNumberFormatter *numberFormatter = [[[NSNumberFormatter alloc] init] autorelease];
    [numberFormatter setNumberStyle: NSNumberFormatterCurrencyStyle];
    NSString *numberAsString = [numberFormatter stringFromNumber:[NSNumber numberWithInt:currency]];
    SumCurrency.text = [NSString stringWithFormat:@"Converted:%@",numberAsString];  
}

你所提出的问题已经有了答案,只是你的方法不对。请看下面我对你问题的相同回答。 - yunas

6
NSNumberFormatter * fmt;
NSNumber          * n;

fmt = [ [ NSNumberFormatter alloc ] init ];
n   = [ NSNumber numberWithFloat: 10 ];

[ fmt setFormatterBehavior: NSNumberFormatterBehavior10_4 ];
[ fmt setCurrencySymbol: @"$" ];
[ fmt setNumberStyle: NSNumberFormatterCurrencyStyle ];

 // NSLog( @"%@", [ fmt stringFromNumber: n ];

[ fmt release ];

使用

SumCurrency.text = [ fmt stringFromNumber: n ];

并且您就完成了它


未来会出现问题吗? - Mayank Patel

1

致向提出和回答此问题的人:

你说:

[numberFormatter stringFromNumber:[NSNumber numberWithInt:currency]];

但是我认为,如果您正在使用类的对象,例如NSNumber,则可能需要放置

[numberFormatter stringFromNumber:(NSNumber *) currency]];

你明白我想说什么吗?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接