【发布时间】:2010-07-21 20:40:38
【问题描述】:
我使用整数值(一个枚举)表示风向,范围从 0 代表北,到 15 代表北-北-西。
我需要检查给定的风向(0 到 15 之间的整数值)是否在一定范围内。我指定我的WindDirectionFrom 值首先顺时针移动到WindDirectionTo 以指定允许的风向范围。
显然如果WindDirectionFrom=0和WindDirectionTo=4(在N和E方向之间)并且风向是NE(2)计算很简单
int currentWindDirection = 2;
bool inRange = (WindDirectionFrom <= currentWindDirection && currentWindDirection <= WindDirectionTo);
//(0 <= 2 && 2 <= 4) simple enough...
但是对于另一种情况,例如 WindDirectionFrom=15、WindDirectionTo=4 并且风向再次为 NE (2),计算立即中断...
bool inRange = (WindDirectionFrom <= currentWindDirection && currentWindDirection <= WindDirectionTo);
//(15 <= 2 && 2 <= 4) oops :(
我敢肯定这不会太难,但我对这个真的有心理障碍。
【问题讨论】:
标签: language-agnostic enums discrete-mathematics