C#小于一定数量

时间:2018-08-25 23:03:28

标签: c#

我在这里有一个简单的循环:

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内,然后中断。

1 个答案:

答案 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 {
    ...
  } 
}