C++整数除法到浮点数

C++ Integer Division to Float

本文关键字:浮点数 除法 整数 C++      更新时间:2023-10-16

我的C++程序接受三个整数输入,并进行一些计算,包括除法。起初,最终结果不是小数。在堆栈溢出上搜索了一点(除以产生浮点结果)后,我发现我应该添加一个(浮点数),如下所示:

int a;
int b;
float c;
a = 5;
b = 2;
c = (float)a / b;

所以我尝试了一下,但我最终的结果是 -nan(ind)。首先,这意味着什么?其次,如何使我的程序正常工作?

顺便说一下,这是我试图在我的程序中做的数学。

int v;
int e;
int a;
float r;
r = ((float)e - v) / ((float)a / 1000);

编辑:对不起,我的错误。我的意思是在第二个示例中键入 1000,而不是 c。

尝试将每个变量转换为浮点数,看看是否可以解决问题。此外,在第二个示例中,您永远不会初始化变量,这会导致错误,因为它们的值未定义,它可以是任何东西。您也忘了包含变量 c。

查看这是否引发错误:

int v = 1;
int e = 1;
int a = 1;
int c = 1;
float r;
r = ((float)e - (float)v) / (float)a / (float)c;

另外,对于类型之间的转换,我建议您使用"static_cast<类型>(变量)"而不是"(类型)变量"。这是在 c++ 中强制转换类型的推荐方法,它还使转换在调试时更容易发现。您的代码如下所示:

int v = 1;
int e = 1;
int a = 1;
int c = 1;
float r;
r = (static_cast<float>(e) - static_cast<float>(v)) / static_cast<float>(a) / static_cast<float>(c);

您必须像第一个示例一样初始化每个变量,并为每个变量分配值。
试试这个:

int v;
int e;
int a;
int c;
float r;

a = 5;
c = 2;
e = 5;
v = 2;
r = ((float)e - v) / (float)a / c;
cout << r;