gibt es eine Funktion um Zahlen zu runden?
In der Sprachreferenz konnte ich nichts finden.
Ich habe es mit round() probiert, aber das funktioniert nicht.
Es wird ohne Fehlermeldung kompiliert, nimmt sich dabei aber ca. 750 Byte des knappen Speichers.
Wenn nun, als Beispiel, in "zaehler" der Wert 11896 steht, so erhalte ich in "rundungstest" 396. Rechnerisch sind es aber 396,5333. Sollte also aufgerundet werden. Das geschieht aber nie, es wird immer abgerundet.
Schreib mal 30.0 statt 30, dann kriegst du das Ergebnis auch als float. Ansonsten verwirft er die Nachkommastellen schon vorm Runden.
Alternativ ersetze die Zeile "rundungstest = round(zaehler / 30);" durch
rundungstest = zaehler/30;
if((zaehler % 30) >= 15) rundungstest++;
damit kriegst du den gleichen Effekt ohne floating-point-Arithmetik, dadurch bläht sich die Datei weniger auf.
Falls du eine Erklärung brauchst, der %-Operator gibt dir den "Rest" einer Ganzzahldivision, ist der mindestens so groß wie der halbe Nenner wird aufgerundet.
Variablen vom Typ long sind ganzzahlige Zahlen ohne Kommastellen. Wenn Du eine Berechnung machst, bei der Nachkommastellen entstehen, werden diese einfach ignoriert. Die einzige Möglichkeit damit Kommastellen berücksichtigt werden sind float-Variablen. Bei denen ist das Problem, daß der Sketch größer wird und daß die Genauigkeit höchstens 6-7 Stelle ist, also ungeeignet diesen Typ als Zähler zu verwenden.