Losing float precision

Don't use floats. I kept ralPos a float as it's a bit easier. Just to give you the idea:

float realPos = 0; //Real position

unsigned long stepSize = 796; // micro meters
unsigned long stepsPerMeter = 1257;

void setup()
{
  Serial.begin(9600);

  for (unsigned long i = 0; i < stepsPerMeter; i++)
  {
    realPos += stepSize;
  }

  Serial.print(realPos / 10000, 6); Serial.println(" centimeters");
  Serial.print(realPos / 1000000, 6); Serial.println(" meters");

}

void loop()
{
}

Result:

100.057197 centimeters
1.000572 meters