微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

原文地址:https://www.jb51.cc/c/117494.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐