将NSString转换为货币格式

时间:2012-07-11 17:26:47

标签: ios

在Java中,我们使用$ currency格式来执行此语句。

    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。

1 个答案:

答案 0 :(得分:10)

你可以用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对此有帮助。