所以我试着比较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号,但我打算添加更多机器人,这样才能保持灵活性。
我遇到的问题是我将xPosRobots
与Map
进行比较。 Map [1] [0]设置为1,它似乎不会触发if条件。
同样,当我尝试通过if(xPosRobots[i] == 1)
检查它时,但这似乎也不起作用,因为当xPosRobots [i] = 1时我的代码跳过它并且我认为它可能是由于精度水平有双重?所以我的问题是,当处理3小数点精度时,进行这种比较的好方法是什么?