mit floor habe ich auch gerade was probiert, ist in <math.h> definiert.
floor gibt aber einen double-Wert zurück.
Ganz korrekt müsste es mit type-casting
y=(integer)(floor(x+0.5))
heißen, dafür kann man gleich
y=(integer)(x+0.5)
schreiben. Das type-casting macht der Compiler meist automatisch.
Die Frage ist, ob man das ganze nicht auch mit Integern lösen kann,
wenn man z.b. die "Auflösung" gleich höher ansetzt.
z.B. muss ich gerade die Periodendauer eines Timers ausrechnen.
timer = TIMERFREQ / freq; //z.B. 5000000 / 5000
Dafür schreibe ich
timer = 10 * TIMERFREQ / freq10; //z.B. 50000000 / 50000
freq10 ist die gewünschte Frequenz in Zehntel-Hertz.
So spare ich den ganzen float-Kram.
Es muss nicht unbedingt zehntel sein, es gehen auch "gerade" Werte
wie 8tel oder 256stel.
Bei 256stel bedeutet das, ich habe ein Byte nach dem Komma.
Wenn ich dann runden will, zähle ich 1 auf den Vorkomma-Teil, wenn im
Nachkomma-Byte das höchste Bit gesetzt ist.