2010-03-03 66 views
3

我在這裏是一個N00b。如何使用NSNumberFormatter在UITextField中打印貨幣

打印我的貨幣是這樣的:

-(IBAction)buttonPressed1:(id)sender 
    { 
     double currency = [Amount1.text doubleValue] + [Amount2.text doubleValue]; 
     SumCurrency.text = [NSString stringWithFormat:@"%0.0f", answer]; 
    } 

我只是單純的想用NSSNumberFormatter打印SumCurrency.text美國貨幣格式..有一個很大的麻煩,它..Please hekp

同樣的問題? http://groups.jonzu.com/z_apple_using-a-nsnumberformatter-with-a-uitextfield.html

在此先感謝。

問候, N00B

回答

16

我得到了答案。但對任何人的將來參考

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

,或者在斯威夫特:

let amount = 123.56 
let formatter = NSNumberFormatter() 
formatter.locale = NSLocale.currentLocale() 
// or 
// f.locale = NSLocale(localeIdentifier: "it_IT") 
formatter.numberStyle = NSNumberFormatterStyle.CurrencyStyle 

let formattedAmountSting = formatter.stringFromNumber(amount) 
1
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 ] /* Thanx willcodejavaforfood... My mistake ;) */ 
+0

嘿謝謝你..我會馬上檢查一下。 我需要把這個裏面 - (IBAction)buttonPressed1:(id)發件人 { } 對不對? 謝謝你 – user285096 2010-03-03 08:34:44

+0

我在UILabel – user285096 2010-03-03 08:48:02

+0

上顯示,不要忘記釋放格式化程序:) – willcodejavaforfood 2010-03-03 08:52:00

4

這是一個例子Objective-C中的類別發光。

最乾淨的解決方案是爲NSNumber創建一個類別。 .H:

@interface NSNumber (Formatter) 

- (NSString *)currencyStringValue; 

@end 

和.M:

@implementation NSNumber (Formatter) 

- (NSString *)currencyStringValue 
{ 
    NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; 
    formatter.locale = [NSLocale currentLocale]; 
    formatter.numberStyle = NSNumberFormatterCurrencyStyle; 

    return [formatter stringFromNumber:self]; 
} 

@end 

在代碼中,你必須#IMPORT 「的NSNumber + Formatter.h」,只是這樣做:

- (IBAction)buttonPressed1:(id)sender 
{ 
    double total = [Amount1.text doubleValue] + [Amount2.text doubleValue]; 
    NSNumber *totalNumber = [NSNumber numberWithDouble:total]; 
    SumCurrency.text = totalNumber.currencyStringValue; 
} 

非常清晰,乾淨。

-1

使用float或double(浮點算術)與金錢是一個非常糟糕的主意,因爲精度錯誤。你應該使用定點算術,又名NSDecimalNumber。

+0

對於數據系統來說,這通常是正確的,但對於顯示而言,如果您想顯示一個數字,則浮點方法非常合理。 – 2016-10-18 18:13:35

相關問題