Probleme mit Impulsabstandsmessung

Also die Analyse funktioniert jetzt und stimmt auch so weit. Leider habe ich noch ein weiteres Problem.

Wenn ich die Periodendauer (Abstand zwischen 2 Impulsen) in eine Drehzahl umrechnen will muss ich die Periodendauer in Sekunden darstellen, also Teile ich die Periodendauer durch 1000000 um von µs auf s zu kommen. Als Variablentyp benutze ich daüfr extra einen float um eine Fließkommazahl zu bekommen, hier gibt es aber ein Problem: Der Chip rundet und zwar immer auf 2 Nachkommastellen. Also wird aus z.b. 10.000µs (bei 6000u/min) 0,01s. In dem Fall wäre es ja nicht schlimm, aber wenn die Drehzahl sich ändert und die Impulslänge z.B. auf 6.000µs fällt kommt eben auch 0,01s raus (ist ja auch logisch), das ist aber viel zu ungenau.

Weiß jemand wie ich den float umstellen kann damit ich 5 Nachkommastellen bekomme zum Rechnen?

Ich kann natürlich auch weiter rechnen in µs allerdings muss ich dann bei der Umrechung in eine Frequenz 1/T rechnen und stoße dann auf das Problem das eben 1/10.000 dann 0 ergibt, was ja falsch ist.

int pin = 4;
int duration;
float time;
float frequency;
int rpm;

void setup()
{
  pinMode(pin, INPUT);
  Serial.begin(9600);
}

void loop()
{
 
    
      
    duration = pulseIn(pin, HIGH);  //Messen der Impulslänge
    duration = duration*2;          //mit 2 Multiplizieren da 50-50 Impulssignal
    time = duration/1000000;        //Umrechnen von µs auf s
    frequency = 1/time;             //Umrechnen von Periodendauer in Frequenz
    rpm = frequency * 60;           //Umrechnen von 1/s in 1/min
    Serial.println(rpm);          //Ausgabe der Drehzahl in 1/min
    
   
   
    
}