C:计算12浮点数12之间的距离

前端之家收集整理的这篇文章主要介绍了C:计算12浮点数12之间的距离前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我需要一个函数dist(a,b)//0≤a,b< 12使用模12返回最短(绝对的)距离ala时钟算术. 所以,例如,
dist( 1,2 )
 = dist( 2,1 )
 = dist( 11,0 )
 = dist( 0,11 )
 = dist( 0.5,11.5 )
 = 1

编辑:虽然这可以通过一些黑客攻击轻松完成,我觉得必须有一些直观的解决方案,可能使用fmod和modulo 6

解决方法

首先,最佳解决方案是非常重要的,需要一点思考.
float distMod12(float a,float b)
{
    float diff = fabs( b - a );
    return ( diff < 6 ) ? diff : 12 - diff;
}

编辑:或者,

return MIN( diff,12 - diff ); // needs a MIN function

完整代码列表:http://ideone.com/XxRIw

猜你在找的C&C++相关文章