声明变量为float,但输出为整数 我用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;

声明变量为float,但输出为整数 我用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;,c++,output,xlib,C++,Output,Xlib,坡度应为0.5,但它给出0。你能解释一下为什么,正确的方法是什么吗??是因为XPoint吗??非常感谢您的帮助。似乎x和y的成员是整数类型的,所以除法是对整数进行的,只需截断结果的小数部分。换句话说,50/100(即0.5)会被截断为您在输出中看到的0 为了避免这种情况,必须将其中一个操作数强制转换为浮点值,如下所示: float slope = static_cast<float>(m[2].y-m[1].y)/(m[2].x-m[1].x); 如果XPoint的成员是整数,那么

坡度应为0.5,但它给出0。你能解释一下为什么,正确的方法是什么吗??是因为XPoint吗??非常感谢您的帮助。

似乎x和y的成员是整数类型的,所以除法是对整数进行的,只需截断结果的小数部分。换句话说,50/100(即0.5)会被截断为您在输出中看到的0

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

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

如果XPoint的成员是整数,那么无论将结果赋给什么类型,您都在执行整数算术。@user3518182不客气。如果你喜欢我的答案,你可以考虑投票和/或接受它。