2012-12-18 6 views
3

가능한 중복 :
CGFloat addition bug?CGFloat가 어떻게 유효 자릿수를 구성합니까?

내가 (이 CGFloats 주변 단지 구조체 임) CGPoint 있습니다. 누군가가 나에게 코드의 방법이 두 줄을 설명 할 수 :

player.position = CGPointMake(player.position.x + 12.8f, player.position.y + 12.8f); 
NSLog(@"%f,%f", player.position.x, player.position.y); 

이 출력을 생성하는 : 지점에 대한

828.799988,236.800003 
841.599976,249.600006 
854.399963,262.399994 
867.199951,275.199982 
879.999939,287.999969 
892.799927,300.799957 
905.599915,313.599945 

출발 값은 (816, 224);

답변

4

여기에서 플로팅 값을 다루고 있습니다. 그것은 그 마진에 오류가 있음을 의미합니다. 당신은 임의의 소수 자릿수로 반올림하려면 다음 코드를 사용

NSString *value = [NSString stringWithFormat:@"%.1f", theFloat]; 

위의 코드는 당신이 필요로 1 소수점 자리로 반올림합니다.

2

CGFloat은 IEEE 754 단 정밀도 또는 배정 밀도 부동 소수점 숫자이며 well-known accuracy problems입니다. 당신이보고있는 것은 그것의 효과입니다.

관련 문제