Objective C에서 3 자리 숫자에 쉼표를 추가하는 방법은 무엇입니까?
숫자가있는 경우 int aNum = 2000000NSString 2,000,000으로 표시 할 수 있도록 형식을 어떻게 지정합니까?
자신의 숫자 서식을 지정하지 마십시오. 거의 확실하게 모든 엣지 케이스를 올바르게 얻거나 가능한 모든 로케일을 올바르게 처리하지 못할 것입니다. NSNumberFormatter숫자 데이터를 지역화 된 문자열 표현으로 형식화 하려면을 사용하십시오 .
당신은 사용하는 것이 NSNumberFormatter인스턴스 메소드를 -setGroupingSeparator:그룹화로 구분 설정 @","(더 좋은 방법이나 [[NSLocale currentLocale] objectForKey:NSLocaleGroupingSeparator], 감사 @ntesler를) 및 -setGroupingSize:그룹화 구분마다 3 자리 숫자를 넣어.
사용 NSNumberFormatter.
구체적으로 특별히:
NSNumberFormatter *formatter = [NSNumberFormatter new];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle]; // this line is important!
NSString *formatted = [formatter stringFromNumber:[NSNumber numberWithInteger:2000000]];
[formatter release];
기본적으로 NSNumberFormatter현재 로케일을 사용하므로 그룹 구분 기호는 기본적으로 올바른 값으로 설정됩니다. 중요한 것은 숫자 스타일을 설정하는 것을 기억하는 것입니다.
필요한 작업을 수행 하는 정적 메서드NSNumberFormatter 가 있습니다.
int aNum = 2000000;
NSString *display = [NSNumberFormatter localizedStringFromNumber:@(aNum)
numberStyle:NSNumberFormatterDecimalStyle];
이 방법은 NSNumberFormatter포맷터의 추가 구성을 수행 할 필요가없는 경우 새로 만드는 것보다 조금 더 간결 합니다.
더 쉽게 :
NSNumber *someNumber = @(1234567890);
NSString *modelNumberString = [NSString localizedStringWithFormat:@"%@", someNumber];
NSLog(@"Number with commas: %@", modelNumberString);
동료가 오늘 이걸 가르쳐 줬어요. #놀랄 만한
샘플을 찾는이 게시물을 얻을 수 있으므로 일부를 생각하십시오. 따라서 숫자로 작업하는 경우 다음 매개 변수에주의를 기울이십시오.
setNumberStyle:NSNumberFormatterCurrencyStyle // if you are working with currency
또한
setNumberStyle:NSNumberFormatterDecimalStyle
모든 코드는 ARC 용입니다.
Integer로 작업 중이고 200,000과 같은 결과를 얻어야하는 경우
int value = 200000;
NSNumberFormatter * formatter = [NSNumberFormatter new];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
NSString * newString = [formatter stringFromNumber:[NSNumber numberWithInteger:value]];
Float로 작업 중이고 200,000.00과 같은 결과를 얻어야하는 경우
float value = 200000;
NSNumberFormatter * formatter = [NSNumberFormatter new];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
[formatter setMaximumFractionDigits:2]; // Set this if you need 2 digits
NSString * newString = [formatter stringFromNumber:[NSNumber numberWithFloat:value]];
편집하다
다른 디지털 구분 기호를 사용하려면 NSLocale. NSLocale로케일 식별자에 지정된 코드에 추가 :
[formatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"de_DE"]];
또는 현재 로컬 사용 :
[formatter setLocale:[NSLocale currentLocale]];
Swift 버전
let formatter = NSNumberFormatter()
formatter.numberStyle = .DecimalStyle
formatter.maximumFractionDigits = decimalPlaces
let result = formatter.stringFromNumber(NSNumber(double: 8.0))
으로 http://ios.eezytutorials.com
An easy solution could be this. My answer is almost same like @Nazir's answer but with a small trick.
double current_balance = 2000000.00;
NSNumberFormatter * formatter = [NSNumberFormatter new];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
//[formatter setNumberStyle:NSNumberFormatterCurrencyStyle]; //if you want for currency with $ sign
[formatter setMinimumFractionDigits:2]; // Set this if you need 2 digits
[formatter setMaximumFractionDigits:2]; // Set this if you need 2 digits
NSString * currency_format = [NSString stringWithFormat:@"%@", [formatter stringFromNumber:[NSNumber numberWithDouble:current_balance]]];
For Swift 4.0
let formatter = NumberFormatter()
formatter.numberStyle = .decimal
formatter.minimumFractionDigits = 2
formatter.maximumFractionDigits = 2
let result = formatter.string(from: NSNumber(value: 123456))
'IT TIP' 카테고리의 다른 글
| 선행 0으로 채우기 (0) | 2020.10.27 |
|---|---|
| 신속하게 전화 걸기 (0) | 2020.10.27 |
| Android 에뮬레이터가 보이지 않습니다. 어떻게 옮길 수 있습니까? (0) | 2020.10.27 |
| Android Studio의 : app : compileDebugJavaWithJavac 작업에 대한 실행 실패 (0) | 2020.10.27 |
| Gradle Test Dependency (0) | 2020.10.26 |