2012-07-11 141 views
4

在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

回答

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對此很有幫助。

+0

它與「%.2lf」和doubleValue一起工作。謝謝:) – NamshanNet 2012-07-11 21:26:06

+0

%.2lf將無法正常工作。嘗試將總數設置爲55.0,並查看使用%.2lf獲得的內容 – 2014-05-03 17:49:28