#include <iostream>
#include <stdio.h>
using namespace std;
int main() {
float f=static_cast<float>(5/2);
printf("%f",f);
return 0;
}
答案总是2.0。 我在询问之前搜索过但找不到答案。
答案 0 :(得分:2)
你只需要做
float f = 5.0f / 2;
在您的代码中,5
和2
为int
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;
}