2012-07-08 2 views
0

xib 파일에 텍스트 필드가 있습니다. .m 파일의 메서드에서 텍스트 필드의 내용을 인쇄 할 수 있지만 그 내용을 float로 변환 할 수 없습니다. 텍스트 필드는 쉼표로 123,456,789와 같이 형식이 지정됩니다. 아래는 코드 스 니펫입니다. 여기서 datacellR2C2는 텍스트 필드입니다.NSString floatValue가 올바르게 작동하지 않는 것 같습니다.

float originalValue2 = originalValue2 = [datacellR2C2.text floatValue]; 
NSLog(@"datacellR2C2 as text --> %@ <---\n",datacellR2C2.text); // this correctly shows the value in datacellR2C2 
NSLog(@"originalValue2 = %f <--\n", originalValue2); // this incorrectly returns the value 1.0 

문제점을 찾아야하는 수정 사항이나 방향에 대한 제안이 있으면 좋겠습니다. -floatValue에 대한 선언에서

+0

왜 float가 있습니까? originalValue2 = originalValue2 = ....;? originalValue2 = ..... 대신; – tarheel

+0

게시 한 텍스트의 오타입니다. 나는 이중 검사를했고 원본에 없었습니다. 혼란이 생겨서 죄송합니다. 원본은 ... float originalValue2 = [datacellR2C2.text floatValue]; – K17

답변

1

은 주석이 표시됩니다 :

/* 다음과 같은 편리한 메소드는 모든 초기 공백 문자 (whitespaceSet)를 생략하고 후행 문자를 무시합니다. NSScanner는 숫자의 "정확한"구문 분석을 위해 을 사용할 수 있습니다. */

Ergo, 쉼표는 후행 문자이기 때문에 자릅니다. 입력 한 문자열 (123,456,789)은 123.000 만 인쇄합니다. 그 이유는 모두 -floatValue입니다.

//test 
NSString *string = @"123,456,789"; 
float originalValue2 = [string floatValue]; 
NSLog(@"datacellR2C2 as text --> %@ <---\n",string); // this correctly shows the value in datacellR2C2 
NSLog(@"originalValue2 = %f <--\n", originalValue2); 

//log 
2012-07-07 22:16:15.913 [5709:19d03] datacellR2C2 as text --> 123,456,789 <--- 
2012-07-07 22:16:15.916 [5709:19d03] originalValue2 = 123.000000 <-- 

그냥 간단한 +stringByReplacingOccurrencesOfString:withString:로 제거하고, 그 후행 쉼표 제거 얻을 : 대신 배정 밀도를 사용하는 플로트가 짝수까지 해당 문자열을 반올림하는 방식으로

//test 
NSString *string = @"123,456,789"; 
NSString *cleanString = [string stringByReplacingOccurrencesOfString:@"," withString:@""]; 
float originalValue2 = [cleanString floatValue]; 
NSLog(@"datacellR2C2 as text --> %@ <---\n",cleanString); // this correctly shows the value in datacellR2C2 
NSLog(@"originalValue2 = %f <--\n", originalValue2); 

//log 
2012-07-07 22:20:20.737 [5887:19d03] datacellR2C2 as text --> 123456789 <--- 
2012-07-07 22:20:20.739 [5887:19d03] originalValue2 = 123456792.000000 <-- 

을 .

+0

죄송합니다 ... 나는 doubleValue를 썼다는 것을 믿을 수 없습니다 ... – CodaFi

+0

고맙습니다 !!!!!!! – K17

관련 문제