2013-01-17 2 views
-1

가능한 중복을 제공합니다
What is the behavior of integer division in C?부문은 항상 0

내가 1과 0 사이에해야하는데 답변과 나눗셈 계산을,

float a = 1; 
float b = 2; 
float c = a/b; //variable divide by variable gives 0.5 as it should 
float d = 1/2; //number divide by number gives 0 
float e = 4/2; 
NSLog(@"%f %f %f %f %f", a,b,c, d, e); 
: 항상 0

이 시도 반환

나는 콘솔에서이 얻을 :

2013년 1월 17일 14 : 24 : 17.512 MyProject를 [1798을 : C07] 1.000000 2.000000 0.500000 0.000000 0.500000

내가 무슨 일이 일어나고 있는지 전혀 모른다 에.

+3

보기 [이 (http://stackoverflow.com/q/3602827/1402846),이 (http://stackoverflow.com/q/2976011/1402846), [this] (http://stackoverflow.com/q/2345902/1402846), [this] (http://stackoverflow.com/q/4197841/1402846), [this] (http : // stackoverflow. com/q/8459351/1402846). – Pang

+0

당신은 1.f/2, 1.0/2, 1/2.0000f, 1/(float) 2 ... 기본적으로 2 개의 int가 될 수 있습니다. –

+3

이봐, 잠깐만 ... 어떻게'0.500000' 'e'는'4/2'입니까? '2.000000'이어야합니다. – Pang

답변

6

정수로 정수를 나눕니다. 결과는 정수가됩니다, 나머지는 생략 : 분할이 완료

1/2 = 0  The remainder (0.5) is omitted. 

후에 만, 당신의 결과는 당신의 float d 변수로 전달됩니다.

편집 : 맞습니다. 해결책을 제안하는 것을 잊어 버렸습니다. 피연산자 중 하나 이상이 부동표인지 확인하십시오.

1.0/2 = 0.5  

1/2.0 = 0.5 
+1

그리고 그것을 고치려면 최소한 하나의 명시 적 플로트를 피연산자로 사용하십시오 :'1.0/2;'또는'1/2.0; –

+0

이상. 모두들 내가 고마워했다. – Dylanthepiguy