我有这一段代码C++ SIN()返回不正确的结果
bool Position::HasInLine(const Unit * const target, float distance, float width) const
{
if (!HasInArc(M_PI, target) || !target->IsWithinDist3d(m_positionX, m_positionY, m_positionZ, distance))
return false;
width += target->GetObjectSize();
float angle = GetRelativeAngle(target);
float absSin = abs(sin(angle));
return abs(sin(angle)) * GetExactDist2d(target->GetPositionX(), target->GetPositionY()) < width;
}
问题我跑入是,当我使用gdb调试和尝试“P罪(角度)”则返回怪异值 - 对于角度1.51423它说,sin = 29(所以是的,我放入弧度:-))。更奇怪的是,当我尝试“p absSin”时,它总是返回0,并且是,我在下一行,所以“float absSin = abs(sin(angle))”行已经完成。 原来这里甚至没有包含cmath,但是M_PI常量返回了正确的值,尽管我在.cpp文件的开头添加了#include以确保但没有任何更改。
如果有帮助,即时通讯使用Linux内核2.6.26-2-xen-amd64 任何想法?
当罪产量东西> 1,则事情是真的* *打破了您的设置。也许有人写了一个隐藏原始函数的自己的sin函数?你可以在你的对象和库文件上使用`nm`来搜索违规文件。 – Rudi 2011-02-05 10:40:35