我在这里有一个简单的循环:
for (; ; )
{
if (start == end)
{
break;
}
else
{
{
if (start > end)
{
SendKeys.SendWait("{F9}");
File.WriteAllText(path, String.Empty);
createText = "bind F9 \"exec odymod\"" + Environment.NewLine;
createText = cmd + " " + start + Environment.NewLine;
File.WriteAllText(path, createText);
start = start - inc;
}
else
{
SendKeys.SendWait("{F9}");
File.WriteAllText(path, String.Empty);
createText = "bind F9 \"exec odymod\"" + Environment.NewLine;
createText = cmd + " " + start + Environment.NewLine;
File.WriteAllText(path, createText);
start = start + inc;
}
System.Threading.Thread.Sleep(20);
}
}
}
但是,我遇到了一个问题。我试图在start = end结束之后打破循环,但是,如果inc是一个十进制数,则start永远不会真正等于end。有没有一种方法可以让我看到它是否在该数字的设定范围内,而不是完全等于另一个数字?例如,我想查看起始位置是否在终止位置的0.5内,然后中断。
答案 0 :(得分:3)
要检查start
是否在end
的某个范围之内,您可以使用Math.Abs
:
const double tolerance = 0.5;
...
if (Math.Abs(start - end) < tolerance)
break;
表示“如果start
足够接近end
(差的绝对值小于tolerance
,则break
循环)”。
您可以将最初的for(;;)
循环简化为
// keep looping while start is not close enough to end
while (Math.Abs(start - end) >= tolerance) {
if (start > end) {
...
}
else {
...
}
}