How to get arduino to print something excatly once every milisecond?

BulldogLowell:
but actually read micros() and watch what happens...

I know exactly what happens if you watch the value of micros(), but the effect of micros() not incrementing by exactly 1000 is taken care of by testing for the elapsed period being equal to or greater than 1000, so the period would need to get to 2000 microseconds for it to matter and dividing by 1000 to derive the millisecond value provides an integer result that matches what the OP says he/she wants.

The OPs original problem using millis() was causing a problem for the same reason, but the test for the elapsed time being greater or equal to 1 caused it to matter quite often.