그래서 제가 가지고 있습니다플로트의 정수 부분을 얻으십시오 : Objective-C
float x = x + 0.25;
이 플로트는 클릭이NSLog 발생 때마다 호출됩니다
("% f를"@를, 배);
은 내가 nslog는이x return
1.25 1
1.50 1
3.25 3
4.75 4
같은 어떤 아이디어 있도록 정수 부분을 반환하려면?
그래서 제가 가지고 있습니다플로트의 정수 부분을 얻으십시오 : Objective-C
float x = x + 0.25;
이 플로트는 클릭이NSLog 발생 때마다 호출됩니다
("% f를"@를, 배);
은 내가 nslog는이x return
1.25 1
1.50 1
3.25 3
4.75 4
같은 어떤 아이디어 있도록 정수 부분을 반환하려면?
부동 소수점 숫자가 int
의 범위를 벗어나면 int
으로 변환되지 않습니다.
"%.0f"
으로 인쇄하면 잘리지 않으므로 반올림되므로 4.75는 5
으로 인쇄됩니다. <math.h>
에 선언
컴파일러가 (더 정확하게, 런타임 라이브러리)를 지원하는 경우
는trunc()
,
truncf()
및
truncl()
기능은, 당신이 원하는 게 정확히 무엇을 :
printf("%.0f\n", trunc(x));
그 기능 C99의 새로운 기능 따라서 컴파일러가 지원하지 않을 수도 있습니다. C90은 floor()
기능을 제공합니다. 음수에 대한 특수한 코드를 작성하는 경우이를 사용할 수 있습니다.
당신은 INT (캐스트)로 X를 처리 할 수 있습니다 :
NSLog("%d", (int)x);
참고 :이되지 라운드, 그것은 단지 정수 부분을 반환 값을 자릅니다 것입니다.
편집 : 가능한 모든 플로팅 값을 자르는 안전한 방법은 아니며, 작은 값 (int
에 들어있는 피팅)에도 문제가 없습니다.
x가 'INT_MIN' ..' INT_MAX' 범위를 벗어나면 실패합니다. –
원하는 경우 긴 길이 또는 부호없는 길이를 사용하여 사용 가능한 범위를 늘릴 수 있습니다. – jv42
들어 본 모든 구현에서 가장 큰 정수 유형이 너무 좁아서 가장 좁은 부동 소수점 유형의 전체 범위를 보유 할 수 없습니다. 그리고'trunc()'도 있습니다. –