double误差引起的缺陷

阅读 52

2022-07-27


软件架构师何志丹

void CDoublePoint::ChangeToDirect()
{
if( x > 0 )
{
x = 1 ;
}
else if( x < 0 )
{
x = -1;
} if( y > 0 )
{
y = 1 ;
}
else if( y < 0 )
{
y = -1 ;
}
}

两个相同的double相减,结果可能是0.00001,于是x或y等于1.

void CDoublePoint::ChangeToDirect(const double ZERO)
{
if( x > ZERO )
{
x = 1 ;
}
else if( x < -ZERO )
{
x = -1;
}
else
{
x = 0 ;
} if( y > ZERO )
{
y = 1 ;
}
else if( y < -ZERO )
{
y = -1 ;
}
else
{
y = 0 ;
}
}



精彩评论(0)

0 0 举报