Mittelwert mit INT statt FLOAT

Ich hab mal ne Frage:

Wenn ich nen Mittelwert bilde 5 Zahlen addieren und dann durch 5 teilen, kann ja ne Kommazahl rauskommen.

Was wenn ich das direkt einer INT Variable zuweise, kann das Probleme geben, bzw. muss ich das umwandeln, oder wird einfach wie ich vermute alles hinterm Komma automatisch abgeschnitten und gut?

  unsigned int Mittelwert = 0;
  for (int i = 0; i < 5; i++) {  
    Mittelwert = Mittelwert + analogRead(Sensor);
  }
  Mittelwert = Mittelwert / 5;
    return Mittelwert;

Ja, wird abgeschnitten.

Dein Code macht aber so nicht wirklich Sinn. Du hast keinerlei Verzögerung zwischen den Messungen. Machst du delay rein, wird's noch schlimmer

Nimm ne Lib wie RunningMedian, schreibe alle paar Ms, Sekunden oder was auch immer einen Wert rein (INTERVAL ist dafür mein persönlicher Favorit) und du hast immer einen gleitenden Mittelwert. Bei der Lib kannst du sogar Ausreisser von der Mittelwertbildung ausschließen.

MEIN Respekt vor dem Autor der Lib

In meinem eigentlichen Sketch ist ein delay drin wollte es nur so simpel wie möglich halten. Die Routine nimmt eine Messung die dann als ein Wert für den Messzeitpunkt gespeichert wird.

Die Lib kannte ich nicht. Gucke gleich mal.

Wollte das eh heute in die Richtung ändern, wollte nur sicher gehen, dass meine Probleme die ich noch so habe nicht daran liegen, dass es Probleme gibt weil ich kein Cast gemacht hatte.

Das würde also keine Probleme erzeugen, nur den Wert abschneiden? Warum genau sollte man dann cast machen, statt es einfach so rein zu schreiben?

nur den Wert abschneiden?

Da wird nix abgeschnitten.

Denn: Eine int Berechnung kennt keine Nachkommastellen. Also, keine Stellen: Nichts schneiden! Tipp: Projektion anpassen.

Das würde also keine Probleme erzeugen,

Klar kannst du dir Probleme einhandeln. Welche hättest du denn gerne?

combie: Da wird nix abgeschnitten.

Denn: Eine int Berechnung kennt keine Nachkommastellen. Also, keine Stellen: Nichts schneiden! Tipp: Projektion anpassen.

Klar kannst du dir Probleme einhandeln. Welche hättest du denn gerne?

Naja hab ich ja genug .... Ich meinte nur hätte ja sein können, dass es bei der Division ein Problem gibt, was ich nicht überblicke, wenn ein Rest bleibt.

was ich nicht überblicke, wenn ein Rest bleibt.

Was ist ein Rest? Die Integer Division kennt keine Reste! Also kann auch mit Resten nix passieren. Nix Rest.

Um Reste zu finden, nimmst du nicht den / sondern den % Operator.

Warst Du nicht der der sagt ich soll alles genau durchdenken? Jetzt mach ich's, bin mir eigentlich sicher, frage aber sicherheitshalber nochmal..... ;)

Gut so, und wirst ja auch bestätigt. In combie‘s ureigenenster Ausdrucksweise

Gorkde: Warst Du nicht der der sagt ich soll alles genau durchdenken? Jetzt mach ich's, bin mir eigentlich sicher, frage aber sicherheitshalber nochmal..... ;)

Richtig: Das sagte ich!

Ein Tipp: Schaue dir die Integer Division auf dem Papier an. (und auch die anderen Operatoren.) Das ist keine Zeitverschwendung, einmal machen, tausend mal ernten.

Das größte Problem, ist die Wahl der richtigen Gedanken

ElEspanol: Gut so, und wirst ja auch bestätigt. In combie‘s ureigenenster Ausdrucksweise

Ja, das Triffts sehr genau ;) Aber dazu passt dann nicht, dass er ein Zitat von Dale Carnegie im Footer hat ;)