Berechnung Überlauf, wie Lösen?

Hi

ich bin ziemlicher Anfänger was das Programmieren betrifft, meistens bastle ich mir aus Codeschnippsel das zusammen was ich brauche, soweit bekomme ich das hin.

Ich habe ein Problem, und komme nicht weiter.

Bei dieser Berechnung:
float Wasserstand = ((( Impulse2 * Impulse2 * Impulse2 ) / (( Wasser_MIN - Wasser_MAX ) *( Wasser_MIN - Wasser_MAX ) ) ) *100) / ( Wasser_MIN - Wasser_MAX ) ;
kommt nich das raus, was rauskommen sollte, ich vermute, das eben die Variable zu klein ist, da Impule2 im schlechtesten Fall 12000 ist.

Wie macht man dass, ich habe leider keine Ahnung. Wäre toll, wenn mir hier jemand auf die Sprünge helfen kann.

Hallo und willkommen im Forum!

Deine Frage ist zu allgemein, als dass man sie ohne weitere Informationen beantworten könnte. So ist nicht klar, welchen Typ die Variablen oder Konstanten haben.

Hilfe zur Selbsthilfe: Laß Dir die Zwischenergebnisse ausgeben, dann siehst Du, wo ein Überlauf passiert.

Da ist Mathe eher gefragt. Teile die Berechnung auf mehrere Zeilen auf , dann wird "Wasserstand" nicht zu gross. Und vieles kann man rauskürzen

Mach dir ersteinmal darüber Gedanken, was für Werte du aus der Berechnung erhalten möchtest (Wertebereich)

float Wasserstand = ((( Impulse2 * Impulse2 * Impulse2 ) / (( Wasser_MIN - Wasser_MAX ) *( Wasser_MIN - Wasser_MAX ) ) ) *100) / ( Wasser_MIN - Wasser_MAX )

float differenz=Wasser_MIN - Wasser_MAX;

daraus folgt ohne verwirrende Klammern
Wasserstand = Impulse2 * Impulse2 * Impulse2 / differenz * differenz *100 / differenz

Wasserstand = Impulse2 * Impulse2 * Impulse2 / differenz *100

float temp = Impulse2 / differenz

Wasserstand = temp * Impulse2 * Impulse2 *100

So oder so ähnlich hätte ich das mal probiert. Und dann solltest du trotzdem noch die Wertebereiche checken.

Danke für eure Antworten. Ich hatte in der Zwischenzeit rumprobiert und weiter google bemüht.
Mein Fehler war, dass ich noch nicht wusste, dass egal wie groß der Variablen Typ ist, trotzdem ein Überlauf erzeugt wird, wenn eine andere Variable mit einem kleineren Variablen Typen verwendet in der Rechnung benutzt wird.

Das Aufteilen in mehrere einzelne Berechnungen hat mir auch bei der Lösungsfindung geholfen.

Danke nochmal.

Stivmaster:
Mein Fehler war, dass ich noch nicht wusste, dass egal wie groß der Variablen Typ ist, trotzdem ein Überlauf erzeugt wird, wenn eine andere Variable mit einem kleineren Variablen Typen verwendet in der Rechnung benutzt wird.

Der Typ der Ziel-Variablen ist egal. Der Typ der Variablen die verrechnet werden ist relevant.

Wenn du z.B. long * int machst wird in long gerechnet. Das kann man ausnutzen und z.B. bei int * int eine der Variablen auf long casten um das zu erzwingen