如何输入cast int division到浮点?

时间:2015-01-11 00:41:11

标签: c++ static-cast

#include <iostream>
#include <stdio.h>
using namespace std;

int main() {

 float f=static_cast<float>(5/2);
printf("%f",f);

return 0;
}

答案总是2.0。 我在询问之前搜索过但找不到答案。

3 个答案:

答案 0 :(得分:2)

你只需要做

float f = 5.0f / 2;

在您的代码中,52int s,因此在5/2 /运算符是整数除法运算符;结果将始终为整数,在本例中为2。只有这样才会转换为float,并提供2.0

您需要进行浮点除法,因此至少有一个操作数需要是浮点类型。您可以在没有5.0的情况下编写f,但默认情况下会有double类型,然后结果会转换为float - 这可能导致转换问题(这里不是这些特定的常量值,但是,最好先使用正确的类型)。

答案 1 :(得分:1)

这适用于我的编译器:

#include <iostream>
#include <stdio.h>
using namespace std;

int main() {

 float f=(float)5/(float)2;
printf("%f",f);

return 0;
}

答案 2 :(得分:0)

int main() {

    float f = 5.0 / 2;
    printf("%f", f);
    return 0;
}