C ++ Integer Division to Float

时间:2017-07-05 14:20:39

标签: c++ floating-point int precision integer-division

我的C ++程序接受三个整数输入并进行一些计算,包括除法。起初,最终结果不是小数。在Stack Overflow(Dividing two integers to produce a float result)上搜索了一下之后,我发现我应该添加一个(float),如下所示:

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。

2 个答案:

答案 0 :(得分:2)

尝试将每个变量转换为float,然后查看是否可以解决问题。此外,在第二个示例中,您永远不会初始化变量,这会导致错误,因为它们的值未定义,可能是任何内容。您还忘记包含变量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< type>(变量)'而不是'(类型)变量'。这是在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);

答案 1 :(得分:1)

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

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;