2010-03-03 3 views
3

여기 N00b입니다.UITextField에서 인쇄하기 위해 통화에 NSNumberFormatter를 사용하는 방법

내가 이렇게 내 통화를 인쇄 :

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

난 그냥 단순히 미국 통화 형식으로 SumCurrency.text를 인쇄 할 NSSNumberFormatter를 사용하려면 ..

을 hekp ..Please 그것으로 문제가 많다고

동일한 문제 ??? 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

+0

UILABEL – user285096

+0

에 표시 중입니다. 포맷터를 해제하는 것을 잊지 마십시오. – willcodejavaforfood

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 

, 당신은 "의 NSNumber + Formatter.h을"# import를해야하고 단순히이 할 거라고 :

- (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

데이터 시스템에서는 일반적으로 표시되지만, 숫자를 표시하려는 경우에는 부동 소수점 방법이 완벽하게 적합합니다. –

관련 문제