我在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 ??非常感谢帮助。
答案 0 :(得分:0)
成员x
和y
似乎是一个整数类型,因此除法是在整数上完成的,它只是截断结果的小数部分。换句话说,50 / 100
0.5
会被截断为您在输出中看到的0
。
为了避免这种情况,您必须将其中一个操作数转换为浮点值,如下所示:
float slope = static_cast<float>(m[2].y-m[1].y)/(m[2].x-m[1].x);