双变量比较问题

时间:2017-02-28 02:26:56

标签: c++ double precision

所以我试着比较double类型的2个变量。我有2个数组如下:

double xPosRobots[1];
double Map[10][4] = {
        //{X1, Y1, X2, Y2}
        { 0, 3, 1, 4 }, //Grid 1
        { 1, 3, 2, 4 }, //Grid 2
        { 2, 3, 3, 4 }, //Grid 3
        { 3, 3, 4, 4 }, //Grid 4
        { 4, 3, 5, 4 }, //Grid 5
        { 5, 3, 6, 4 }, //Grid 6
        { 6, 3, 7, 4 }, //Grid 7
        { 6, 2, 7, 3 }, //Grid 8
        { 6, 1, 7, 2 }, //Grid 9
        { 6, 0, 7, 1 }  //Grid 10
    };

我有一个for循环,它会增加xPosRobots中的值,如下所示:

for(int i=0; i<numRobots; i++){
   if(curGridRobot < nextGridRobot){
      xPosRobots[i] += robotSpeed * clock_period;
    }
}

其中robotSpeed = 1且clock_period = .005。

然后,我检查xPosRobots[i]的值,看看我是否越过边界如下:

if(xPosRobots[i] == Map[1][0]){
   //Crossing boundary
   //Update grid position
}

现在,我只有1个机器人,所以xPosRobots[i]只有1号,但我打算添加更多机器人,这样才能保持灵活性。

我遇到的问题是我将xPosRobotsMap进行比较。 Map [1] [0]设置为1,它似乎不会触发if条件。

同样,当我尝试通过if(xPosRobots[i] == 1)检查它时,但这似乎也不起作用,因为当xPosRobots [i] = 1时我的代码跳过它并且我认为它可能是由于精度水平有双重?所以我的问题是,当处理3小数点精度时,进行这种比较的好方法是什么?

0 个答案:

没有答案