"It rotates little bit forward like 10% extra with 3.1 sec delay,"
"I just want to rotate the motor from the home location to the home location when I give signal one time. But i do not know what time delay should I use?"
More than 2.0 and less than 3.1! If 3.1 sec gives 110% rotation, then you need
(100/110)*3.1 = 2.818sec to get 100%.
I realize that your 10% extra is an estimate and not accurate to 3 decimals, but I'd use 2.82 as a starting point and tweak it up or down until you get the amount of rotation you want.
Remember that timing a motor to get distance will inherently be inaccurate due to inconsistencies in the motor acceleration rate and rotation speeds, due to variations in its temperature and the power supply voltage, and load, but this should get you started. For long term accuracy, i.e., if you need it to always come back to a fixed position, you'll need some position feedback, which may be as simple as flag on the motor shaft interrupting a photocell. And even that will have some degree of inconsistency due to coasting speed when you shut the power off, but at least those error won't accumulate.
2.82, My motor rotates 10% less every time and change its location in every rotation
Right - 2.82 was a first approximation. If that is too small, try splitting the difference between 2.81 and 3.1. If that ends up too small, then split the difference between it and 3.1; or if it was too big, try splitting the difference between 2.1 and it. Do that a few more times until you have an acceptably close value.
Then read what I said about accumulating errors. The Arduino doesn't ever know what the motor position is so it can't correct for any overshoot or undershoot. If you need accuracy and repeatability, you'll have to add some kind of position sensing, or switch to using a stepper motor and drive the number of steps that makes one full rotation (and it would still have to be started from a known position).