cntntn:
A) Are you sure that if I write time = 0 , the time don't come to zero?
Sure it does. Then you set it to millis(). Read the code!
What's worse is you made time a float when it should be an unsigned long. The float is less accurate and completely unnecessary.
B) This is only a test, I've written delay(1000) to not go mad with the data.
Your test is bliviting your results.
So, how can I reset the time every sensor read?
You don't. You store the current value of not millis() but micros() in an unsigned long and subtract the last value to get elapsed microseconds which you will give you the accuracy you need at 1000+ rpm when using integer math.
Arduino floats and doubles are 4-byte IEEE floating-point running on an MCU with no FPU. They are s-l-o-w and inaccurate. Choose the right units and you can do better and faster math with integers. Arduino not only has 32-bit integers, it has 64-bit integers both signed and unsigned.