2011-01-03 2 views
5
내가 바보 같은 일을해야

:간단한 부문

float ans = (i/3); 

i = 7가 ANS 2.0에 나오는 경우?

i은 두 피연산자가 정수인 경우 / operator는 정수 나눗셈을 수행하고 그것 때문에하는 int

답변

11

이다. 이 작업을 수행 할 수 있습니다 :

float ans = (i/3.0f); 
+1

보너스 1은 적절한 MSDN 페이지로 연결됩니다. –

+0

그 점에 대해 많은 감사를드립니다.하지만 "f"가 숫자를 다른 이유는 무엇입니까? –

+2

@ m.edmondson : 숫자 접미사는 리터럴 숫자를 특정 유형으로 처리해야한다는 것을 컴파일러에 알리기위한 것입니다. '(float) 3.0'의 줄임말입니다. – Tony

6

당신은 그렇지 않으면 계산이 처음 (항상 정수를 초래하는), float로 결과를 변환하기 전에 정수로 이루어집니다 피연산자 부동 중 하나를 확인해야합니다. iint3int입니다 때문에

float ans = ((float) i)/3; 
0

그것은 정수 나눗셈을하고있어. 이 시도 :

float ans = ((float)i/3.0f); 
0

사용 float ans = (i/3.0) 또는 float ans = (i/3f) 또는 float ans = ((float)i/3). /은 양 측면이 정수 유형 인 경우 정수 나누기를 수행합니다.

0

매우 간단합니다 : C#, int/int = int.

0

은 무엇 당신이 찾고있는 것은 :

float ans = ((float)i/3); 

그렇지 않으면 당신은 두 개의 정수를 복용하고 제수가 배당에 들어간다 전체 횟수를 찾기 위해 그것들을 나누는 것입니다. (위에서 언급 한 것처럼 대상 유형에 관계없이 int/int = int입니다. 그리고 컴파일러에서 "3"은 다른 정수입니다 ( 3.0f으로 지정하지 않은 경우).

0

나는 이것을 가지고 있다고 가정합니다. 어떤 종류의 루프. i 변수를 대신 float로 지정할 수 있습니다.

for (float i = 0; i < 10; i++) 
{ 
    float ans = (i/3); 
    // statements 
} 

또 다른 해결책입니다.