programing

문자열을 이중으로 변환하는 방법과 이중으로 변환하는 방법은 무엇입니까?

lovejava 2023. 4. 29. 08:07

문자열을 이중으로 변환하는 방법과 이중으로 변환하는 방법은 무엇입니까?

나는 문자열을 더블로 변환하고 수학을 한 후에 다시 문자열로 변환하고 싶습니다.

Objective-C에서 어떻게 해야 합니까?

2배를 가장 가까운 정수로 반올림하는 방법도 있습니까?

NSString을 다음을 사용하여 더블로 변환할 수 있습니다.

double myDouble = [myString doubleValue];

다음과 같이 가장 가까운 int로 반올림할 수 있습니다.

int myInt = (int)(myDouble + (myDouble>0 ? 0.5 : -0.5))

나는 솔직히 더 능률적으로 다시 문자열로 변환할 수 있는 방법이 있는지 확신할 수 없습니다.

NSString* myNewString = [NSString stringWithFormat:@"%d", myInt];

문자열에서 숫자로 올바르게 변환하려면 문자열을 읽을 로케일에 대해 구성된 의 인스턴스를 사용해야 합니다.

로케일에 따라 숫자 형식이 다릅니다.예를 들어, 세계의 어떤 지역에서는,COMMA소수 구분자로 사용되는 반면 다른 구분자에서는 사용됩니다.PERIOD수천 개의 구분 기호(사용할 경우)가 반대로 표시됩니다.공간일 때만 빼고요아예 존재하지 않는 경우도 있습니다.

그것은 정말로 입력의 출처에 달려 있습니다.가장 안전하게 수행할 수 있는 작업은 다음을 구성하는 것입니다.NSNumberFormatter입력이 형식화되고 사용되는 방법-[NSFormatter numberFromString:]점수를 따다NSNumber그것으로부터.변환 오류를 처리하려면 다음을 사용할 수 있습니다.-[NSFormatter getObjectValue:forString:range:error:]대신.

olliej의 답변에 추가하여, 당신은 int에서 다음을 사용하여 문자열로 변환할 수 있습니다.NSNumberstringValue:

[[NSNumber numberWithInt:myInt] stringValue]

stringValue에.NSNumber호출.descriptionWithLocale:nil값의 현지화된 문자열 표현을 제공합니다.저는 잘 모르겠습니다.[NSString stringWithFormat:@"%d",myInt]의 적절한 현지화된 표현을 제공합니다.myInt.

NSNumber의 작업 샘플입니다.지역화된 숫자 String(xCode 3.2.4, osX 10.6)을 읽는 포맷터는 내가 방금 빈둥빈둥 놀았던 시간을 다른 사람들을 구합니다.주의: "8,765.4"와 같은 후행 공백은 처리할 수 있지만 선행 공백은 처리할 수 없고 표류 텍스트 문자는 처리할 수 없습니다. (잘못된 입력 문자열: "8" 및 "8q" 및 "8q")

NSString *tempStr = @"8,765.4";  
     // localization allows other thousands separators, also.
NSNumberFormatter * myNumFormatter = [[NSNumberFormatter alloc] init];
[myNumFormatter setLocale:[NSLocale currentLocale]]; // happen by default?
[myNumFormatter setFormatterBehavior:NSNumberFormatterBehavior10_4];
     // next line is very important!
[myNumFormatter setNumberStyle:NSNumberFormatterDecimalStyle]; // crucial

NSNumber *tempNum = [myNumFormatter numberFromString:tempStr];
NSLog(@"string '%@' gives NSNumber '%@' with intValue '%i'", 
    tempStr, tempNum, [tempNum intValue]);
[myNumFormatter release];  // good citizen

음수에 대한 Olliej의 반올림 방법이 잘못되었습니다.

  • 2.4 반올림한 값은 2입니다(Oliej의 방법이 이를 맞춥니다).
  • -2.4 반올림한 값은 -2입니다(olliej의 방법은 -1을 반환함).

여기 대안이 있습니다.

  int myInt = (int)(myDouble + (myDouble>0 ? 0.5 : -0.5))

물론 당신은 수학에서 반올림 함수를 사용할 수 있습니다.

// Converting String in to Double

double doubleValue = [yourString doubleValue];

// Converting Double in to String
NSString *yourString = [NSString stringWithFormat:@"%.20f", doubleValue];
// .20f takes the value up to 20 position after decimal

// Converting double to int

int intValue = (int) doubleValue;
or
int intValue = [yourString intValue];

숫자에서 문자열로의 변환을 위해, 새로운 리터럴 구문(XCode > = 4.4)을 사용하는 것은 어떻습니까, 조금 더 압축적입니다.

int myInt = (int)round( [@"1.6" floatValue] );

NSString* myString = [@(myInt) description];

(NSNumber로 상자에 넣고 NSObjects의 설명 방법을 사용하여 문자열로 변환)

반올림의 경우에는 math.h에 정의된 C 함수를 사용해야 합니다.

int roundedX = round(x);

▁on다▁hold니합▁and클릭▁double번▁down를 두 번 클릭합니다.roundXcode로 하면 다양한 종류의 반올림 기능을 가진 man 페이지를 보여줄 것입니다.

이것이 제가 아는 가장 쉬운 방법입니다.

float myFloat = 5.3;
NSInteger myInt = (NSInteger)myFloat;

이 예제에서는 변환을 양방향으로 확인할 수 있습니다.

NSString *str=@"5678901234567890";

long long verylong;
NSRange range;
range.length = 15;
range.location = 0;

[[NSScanner scannerWithString:[str substringWithRange:range]] scanLongLong:&verylong];

NSLog(@"long long value %lld",verylong);

텍스트 필드에 입력한 텍스트를 정수로 변환

double mydouble=[_myTextfield.text doubleValue];

가장 가까운 두 배로 반올림

mydouble=(round(mydouble));

가장 가까운 int로 반올림(양의 값만 고려)

int myint=(int)(mydouble);

이중에서 문자열로 변환

myLabel.text=[NSString stringWithFormat:@"%f",mydouble];

또는

NSString *mystring=[NSString stringWithFormat:@"%f",mydouble];

다음 문자열로 변환

myLabel.text=[NSString stringWithFormat:@"%d",myint];

또는

NSString *mystring=[NSString stringWithFormat:@"%f",mydouble];

저는 이 편리한 매크로를 사용하게 되었습니다.

#define STRING(value)               [@(value) stringValue]

언급URL : https://stackoverflow.com/questions/169925/how-to-convert-a-string-into-double-and-vice-versa