Problem with greater than or equal to.

I am making a G-code interpreter and have run into an issue in the positioning system.

This code works, but the stepper I am using isn't acreate down to 0.01 mm:

void xSmall(){
  if(abs( xCurrent - xDouble ) <= 0.005){
  //do nothing!!!
  }else{
    if(xCurrent < xDouble){  //Do we move up?
//Move tward xDouble by 0.01 units
  digitalWrite(x1, HIGH);
  delay(d);
  digitalWrite(x1, LOW);
  
  digitalWrite(x2, HIGH);
  delay(d);
  digitalWrite(x2, LOW);

  digitalWrite(x3, HIGH);
  delay(d);
  digitalWrite(x3, LOW);
  
  digitalWrite(x4, HIGH);
  delay(d);
  digitalWrite(x4, LOW);

      xCurrent = xCurrent + 0.01; //write in current location
    }else{
 //Move tward xDouble by 0.01 units
  digitalWrite(x4, HIGH);
  delay(d);
  digitalWrite(x4, LOW);
  
  digitalWrite(x3, HIGH);
  delay(d);
  digitalWrite(x3, LOW);

  digitalWrite(x2, HIGH);
  delay(d);
  digitalWrite(x2, LOW);
  
  digitalWrite(x1, HIGH);
  delay(d);
  digitalWrite(x1, LOW);

     xCurrent = xCurrent - 0.01; //write in current location
    }
  }
}

This code compensates for the inacreasy but is Doesn't work:

void xSmall(){
  if(abs( xCurrent - xDouble ) <= 0.25){
  //do nothing!!!
  }else{
    if(xCurrent < xDouble){  //Do we move up?
 // Move tward zDouble by 0.25 mm
  digitalWrite(x1, HIGH);
  delay(d);
  digitalWrite(x1, LOW);
  
  digitalWrite(x2, HIGH);
  delay(d);
  digitalWrite(x2, LOW);

  digitalWrite(x3, HIGH);
  delay(d);
  digitalWrite(x3, LOW);
  
  digitalWrite(x4, HIGH);
  delay(d);
  digitalWrite(x4, LOW);

      xCurrent = xCurrent + 0.25; //write in current location
    }else{
 // Move tward zDouble by 0.25 mm
  digitalWrite(x4, HIGH);
  delay(d);
  digitalWrite(x4, LOW);
  
  digitalWrite(x3, HIGH);
  delay(d);
  digitalWrite(x3, LOW);

  digitalWrite(x2, HIGH);
  delay(d);
  digitalWrite(x2, LOW);
  
  digitalWrite(x1, HIGH);
  delay(d);
  digitalWrite(x1, LOW);

     xCurrent = xCurrent - 0.25; //write in current location
    }
  }
}

I don't see any logical reason why it wouldn't work? :-?

I don't know anything about gcode, and I didn't read your code carefully, but in the original example the do-nothing value is HALF of the update at the end of the function (0.005, 0.01), while in your new code they are the same (0.25, 0.25) ??