将NSString转换为货币格式

问题描述:

在Java中,我们使用此语句具有$货币格式。将NSString转换为货币格式

double num1 = 3.99 ;  
    double num2 = 1.00 ;  
    double total = num1 + num2; 

    System.out.printf ("Total: $ %.2f", total); 

结果是:

总计:$ 4.99

// -------------------------- ------

iOS中

现在,我怎么得到同样的格式,如果我有以下声明:

total.text = [NSString stringWithFormat:@"$ %d",([self.coursePriceLabel.text intValue])+([self.courseEPPLabel.text intValue])+10]; 

注:
如果我使用doubleValue输出始终为0。

+0

你的'UITextField's是否正确连接(假设Interface Builder)?尝试'NSLog(self.coursePriceLabel.text)'(和其他人)在控制台中查看它们的实际值。 – 2012-07-11 17:42:50

+0

您还应该使用NSDecimalNumber来表示您的金额。 – drewish 2012-07-23 15:02:28

你可以做同样的事情的NSString:

NSString *someString = [NSString stringWithFormat:@"$%.2lf", total]; 

注意,格式说明 “%LF”,而不仅仅是 “%F”。

但这只适用于美元。如果你想使你的代码更本地化,做正确的事情是使用number formatter

NSNumber *someNumber = [NSNumber numberWithDouble:total]; 

NSNumberFormatter *nf = [[NSNumberFormatter alloc] init]; 
[nf setNumberStyle:NSNumberFormatterCurrencyStyle]; 
NSString *someString = [nf stringFromNumber:someNumber]; 

当然,它不会做,显示美元计算与欧元符号或东西值像这样,所以你要么要用用户的货币做所有的计算,要么在显示之前转换成用户的货币。您可能会发现NSValueTransformer对此很有帮助。

+0

它与“%.2lf”和doubleValue一起工作。谢谢:) – NamshanNet 2012-07-11 21:26:06

+0

%.2lf将无法正常工作。尝试将总数设置为55.0,并查看使用%.2lf获得的内容 – 2014-05-03 17:49:28