2014-04-06 1 views
1

두 개의 정수를 나눌 때 float 값을 얻을 수 없다는 문제가 있습니다. 여기 제가 float 값 대신 정수를 가져 오는 C++

int dalyba (int x, int y) 
{ 
float z; 
z = (float) x/y; 
return z; 
} 

그래서 X = 5, Y = 2 경우 I는 2 답변 대신에 2.5를 얻을 사용하는 코드

{ 
    cout << "Kokie skaiciai?" << endl; 
    cin >> x; 
    cin >> y; 
    cout << "Atsakymas: " << dalyba(x, y) << endl; 
} 

및 함수이다. 도움이 필요합니다.

답변

1

문제는 플로트 결과가 정수로 다시 캐스팅 쓴다 귀하의 기능을 대신 floatint를 반환한다는 것입니다. 함수의 반환 값 유형을 int에서 float으로 변경할 수 있습니다.

또한 현대 C++에서는 C++ 스타일의 캐스트static_cast<>과 같이 사용하려고 할 수 있습니다. 예상대로

다음 코드를 인쇄 2.5 :

#include <iostream> 
using namespace std; 

float f(int x, int y) { 
    return static_cast<float>(x)/y; 
} 

int main() { 
    cout << f(5, 2) << endl; 
} 
+0

도움에 감사드립니다! – user3504402

+0

@ user3504402 : 환영합니다. –

5

dalyba 함수의 반환 값은 int입니다. 이것은 float이어야합니다.

float dalyba (int x, int y) 
{ 
    float z; 
    z = (float) x/y; 
    return z; 
} 
+0

그것을 시도하고 응답으로 1,075,838,976을 얻었다. – user3504402

+1

@ user3504402 : 나는 그것을 시도하고'2.5'를 얻었다. 나는'float' 값'2.5'을 취하여'int' 인 것처럼 해석하면'1075838976'을 얻습니다. 우리에게 보여주지 않는 코드에서 뭔가를해야합니다. –

관련 문제