如何将 cast int 除法类型转换为浮点数?
How to type cast int division to floating point?
#include <iostream>
#include <stdio.h>
using namespace std;
int main() {
float f=static_cast<float>(5/2);
printf("%f",f);
return 0;
}
答案始终是 2.0。
我在问之前搜索了但找不到答案。
你只需要做
float f = 5.0f / 2;
在您的代码中,5
和 2
是 int
,因此在 5/2
中, /
运算符是整数除法运算符;结果将始终是一个整数,在本例中为 2
。然后才转换为 float
,得到 2.0
.
你需要做浮点除法,所以至少有一个操作数需要是浮点类型。您可以只写 5.0
,而不使用 f
,但默认情况下,类型为 double
,然后结果将转换为 float
- 这种转换可能会导致问题(这里不针对这些特定的常量值,但是,最好首先使用正确的类型)。
int main() {
float f = 5.0 / 2;
printf("%f", f);
return 0;
}
这适用于我的编译器:
#include <iostream>
#include <stdio.h>
using namespace std;
int main() {
float f=(float)5/(float)2;
printf("%f",f);
return 0;
}
#include <iostream>
#include <stdio.h>
using namespace std;
int main() {
float f=static_cast<float>(5/2);
printf("%f",f);
return 0;
}
答案始终是 2.0。 我在问之前搜索了但找不到答案。
你只需要做
float f = 5.0f / 2;
在您的代码中,5
和 2
是 int
,因此在 5/2
中, /
运算符是整数除法运算符;结果将始终是一个整数,在本例中为 2
。然后才转换为 float
,得到 2.0
.
你需要做浮点除法,所以至少有一个操作数需要是浮点类型。您可以只写 5.0
,而不使用 f
,但默认情况下,类型为 double
,然后结果将转换为 float
- 这种转换可能会导致问题(这里不针对这些特定的常量值,但是,最好首先使用正确的类型)。
int main() {
float f = 5.0 / 2;
printf("%f", f);
return 0;
}
这适用于我的编译器:
#include <iostream>
#include <stdio.h>
using namespace std;
int main() {
float f=(float)5/(float)2;
printf("%f",f);
return 0;
}