0
点赞
收藏
分享

微信扫一扫

double误差引起的缺陷

春意暖洋洋 2022-07-27 阅读 49


软件架构师何志丹

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 条评论