C++ 为什么要将其转换为int?

C++ 为什么要将其转换为int?,c++,floating-point,trigonometry,C++,Floating Point,Trigonometry,我正在设置对象的X和Y位置,使用下面的代码 setX(getX()+(cos(m_fAngleOfShot))); setY(getY()+(sin(m_fAngleOfShot))); m_fAngleOfShot是一个浮点,setY()接受一个浮点,getY()返回一个浮点。当精灵在窗口中被修改时,它要么向上移动(增量Y变为-1)、向左移动(增量X变为-1)、对角左上角移动(两者都是-1),要么根本不移动。这里返回的值似乎是向下舍入的,我不知道为什么。救命啊 cos()和sin()的范围介

我正在设置对象的X和Y位置,使用下面的代码

setX(getX()+(cos(m_fAngleOfShot)));
setY(getY()+(sin(m_fAngleOfShot)));
m_fAngleOfShot
是一个浮点,
setY()
接受一个浮点,
getY()
返回一个浮点。当精灵在窗口中被修改时,它要么向上移动(增量Y变为-1)、向左移动(增量X变为-1)、对角左上角移动(两者都是-1),要么根本不移动。这里返回的值似乎是向下舍入的,我不知道为什么。救命啊

cos()
sin()
的范围介于
-1
1
之间

因此,我相信您已经意识到,
setX()
setY()
只能上下移动1个像素

它们还采用弧度
-PI
PI
的参数


你的m_uUcode>fAngleOfShot是以度或弧度为单位的变量吗?

setX()的参数类型是什么?我认为你发布的代码片段不可能说明问题所在。setX的参数是一个浮点。啊,是的!当然,它们只能上下移动一个像素,这是有道理的。当我将cos()或sin()函数乘以10时,它可以工作(尽管速度要快得多)。所以它不会在小于或等于1的“速度”下工作?我的编码效率很低吗?