2017-05-19 1 views
0

10 진수 한 자릿수를 얻고 double로 저장하려고합니다. 예를 들어 : -소수점 이하 한자리 가져 오기 iOS 목적 C

float A = 146.908295; 
NSString * string = [NSString stringWithFormat:@"%0.01f",A]; // op 146.9 
    double B = [string doubleValue]; // op 146.900000 

나는 이중에서 146.9로 출력을 원하거나 양식을 떠 .. 복제 또는 확인 downvoting 전에이 출력에 대한 답이 .. 감사 편집

이 부여됩니다 확인하십시오 - 에있을 것입니다 여기

NSString * str = [NSString stringWithFormat:@"%0.01f",currentAngle]; 

    tempCurrentAngle = [str doubleValue];; 

    tempCurrentAngle = tempCurrentAngle - 135.0; 

    if (tempCurrentAngle == 8.7) { 
     NSLog(@"DONE "); 
    } 

currentAngle이 continueTrackingWithTouch 방법에서 오는, 그것은 루프도 tempCurrentAngle 값이 변경 될 경우에 입력하지 않습니다 float..here ~ 8.700000입니다. 당신은 당신이 왜 if caluse에 입력되지 않았 음을 아이디어를 얻을 것이다 라인으로 라인을 한 번 디버깅 할 경우

+1

수학적으로 '146.9'와'146.900000'는 동일합니다! 그럼 왜 146.9가 필요한거야? 왜냐하면이 값을 표시해야 할 때 문자열로 변환해야하고 원하는 십진수를 표시 할 수 있기 때문입니다! – Lion

+0

수학을 구현하고 추가로 비교해야합니다 ... –

+0

만약 '146.9와 146.900000'을 비교한다면 그것은 같습니다! – Lion

답변

1

당신은

double currentAngle = 143.7; // I have taken static values for demo. 
double tempCurrentAngle = 0.0; 

NSString * str = [NSString stringWithFormat:@"%0.01f",currentAngle]; 

tempCurrentAngle = [str doubleValue];; 

tempCurrentAngle = tempCurrentAngle - 135.0; 

NSString *strToCompare = [NSString stringWithFormat:@"%0.01f",tempCurrentAngle]; 

if ([strToCompare isEqualToString:@"8.7"]) { 

    NSLog(@"DONE "); 
} 

를 대신 같은 이중의 문자열 값을 비교할 수 있습니다. 당신이 strdouble에 변환 할 때

tempCurrentAngle는 값이 8.6999999999999886 될 것입니다, 그래서 당신은 그것에서 135.0을 줄일 수 143.69999999999999 얻을 당신은 8.7은 다음 확실히 동일되지 않는 것과 비교! 하지만 소수점이 하나 인 tempCurrentAngle 문자열을 변환하면 8.7이됩니다! 더블 대신 문자열 값을 비교해야합니다!

+0

나는이 솔루션을 일찍 시도했지만 수학을 구현하기 위해 더 일찍 노력했다. 다시 이중으로 변환해야한다. –

+0

그래, 그걸해야 해! 한 소수점에서 이중 값을 얻을 수 없기 때문에! – Lion

+0

예 .. 정경 짝 –