声明变量为float,但输出以整数形式出现

时间:2014-04-13 19:14:30

标签: c++ output xlib

我在c ++中使用Xlib头编写了一个程序 这是其中的一部分。

XPoint m[5];

m[0].x = 0; m[0].y = 400;
m[1].x = 150; m[1].y = 250;
m[2].x = 250; m[2].y = 300;
m[3].x = 300; m[3].y = 200;
m[4].x = 450; m[4].y = 400;

float slope=(m[2].y-m[1].y)/(m[2].x-m[1].x); cout<<slope<<endl; 

斜率应为0.5,但它给出0.你能否解释为什么以及正确的方法?是因为XPoint ??非常感谢帮助。

1 个答案:

答案 0 :(得分:0)

成员xy似乎是一个整数类型,因此除法是在整数上完成的,它只是截断结果的小数部分。换句话说,50 / 100 0.5会被截断为您在输出中看到的0

为了避免这种情况,您必须将其中一个操作数转换为浮点值,如下所示:

float slope = static_cast<float>(m[2].y-m[1].y)/(m[2].x-m[1].x);