float ans = (i/3);
왜 i = 7
가 ANS 2.0에 나오는 경우?
i
은 두 피연산자가 정수인 경우 / operator는 정수 나눗셈을 수행하고 그것 때문에하는 int
float ans = (i/3);
왜 i = 7
가 ANS 2.0에 나오는 경우?
i
은 두 피연산자가 정수인 경우 / operator는 정수 나눗셈을 수행하고 그것 때문에하는 int
이다. 이 작업을 수행 할 수 있습니다 :
float ans = (i/3.0f);
당신은 그렇지 않으면 계산이 처음 (항상 정수를 초래하는), float로 결과를 변환하기 전에 정수로 이루어집니다 피연산자 부동 중 하나를 확인해야합니다. i
는 int
및 3
는 int
입니다 때문에
float ans = ((float) i)/3;
그것은 정수 나눗셈을하고있어. 이 시도 :
float ans = ((float)i/3.0f);
사용 float ans = (i/3.0)
또는 float ans = (i/3f)
또는 float ans = ((float)i/3)
. /
은 양 측면이 정수 유형 인 경우 정수 나누기를 수행합니다.
매우 간단합니다 : C#, int/int = int.
은 무엇 당신이 찾고있는 것은 :
float ans = ((float)i/3);
그렇지 않으면 당신은 두 개의 정수를 복용하고 제수가 배당에 들어간다 전체 횟수를 찾기 위해 그것들을 나누는 것입니다. (위에서 언급 한 것처럼 대상 유형에 관계없이 int/int = int입니다. 그리고 컴파일러에서 "3"은 다른 정수입니다 (
3.0f
으로 지정하지 않은 경우).
나는 이것을 가지고 있다고 가정합니다. 어떤 종류의 루프. i 변수를 대신 float로 지정할 수 있습니다.
for (float i = 0; i < 10; i++)
{
float ans = (i/3);
// statements
}
또 다른 해결책입니다.
보너스 1은 적절한 MSDN 페이지로 연결됩니다. –
그 점에 대해 많은 감사를드립니다.하지만 "f"가 숫자를 다른 이유는 무엇입니까? –
@ m.edmondson : 숫자 접미사는 리터럴 숫자를 특정 유형으로 처리해야한다는 것을 컴파일러에 알리기위한 것입니다. '(float) 3.0'의 줄임말입니다. – Tony