Denkfehler in double to int

Thomasio

Erfahrenes Mitglied
Ich starre jetzt schon seit Stunden da drauf, aber egal wie ich es umstelle, das Ergebnis ist immer gleich, will heissen immer falsch

Code:
int startwert = 123;
int endwert = 345;   // nur als Beispiel, die Werte kommen aus User input

int differenz = endwert - startwert;
double schrittweite = differenz / 100;

for (int i = 1; i < 100; i++)
    {
        int zuaddieren = int((schrittweite * i) + 0.5);
        int Zwischensumme = startwert + zuaddieren;
    }

Das Ganze sollte nach meiner Rechenkunst in Zwischensumme, auf ganze Zahlen gerundet in 1% Schritten alle Werte von startwert bis endwert ausgeben und theoretisch sogar dann funktionieren, wenn startwert > endwert ist
Macht er aber nicht, er schneidet mir rigoros alle Nachkommastellen ab, sprich aus differenz = 199 macht er das gleiche wie aus differenz = 100, und bei differenz < 100 gibt er mir 99 mal die gleiche Zahl aus

Mit Sicherheit bin ich einfach zu blind, aber ich sehe es nicht
Kann mir jemand den Denkfehler aufzeigen?
 
Hallo,

bei der Berechnung der Schrittweite sollte wenigstens einer der Operanden ein "double" sein, weil sonst das Ergebnis der Berechnung immer ein "int" ist, der erst danach in einen "double" konvertiert wird.

Du könntest daher schreiben:
C++:
double schrittweite = differenz / 100.0;
Gruß
MCoder
 
Zurück