C ++获取整数而不是浮点值

时间:2014-04-06 19:57:51

标签: c++

我的问题是,当分割两个整数时,我无法获得浮点值。 这是代码

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

和我使用的功能

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

所以如果x = 5且y = 2,我得到答案2而不是2.5。 任何帮助都会被贬低。

2 个答案:

答案 0 :(得分:5)

dalyba函数的返回值为int。这应该是一个浮动。

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

答案 1 :(得分:1)

问题是你的函数返回int而不是float,因此float结果被强制转换为整数并被截断。您可能希望将函数的返回值类型从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;
}