Rofi
Erfahrenes Mitglied
Hi,
folgende Funktionen habe ich in einem Programm:
// Funktion Kraft steigern: Der Wert „power“ soll um den Prozentsatz „prozent“ erhöht werden.
Benutze ich in der ersten Funktion mit den int-Werten obige Schreibweise, ist das Ergebnis bis auf den abgeschnittenen Kommawert korrekt, was aber in Ordnung ist!
Ist die Schreibweise aber wie die Kommentarzeile in derselben Funktion oder so wie in der Geschwindigkeits-steigern-Funktion, so kommen unerwünschte Ergebnisse heraus:
Wird z.Bsp.
power = 100 und prozent = 15 an die Funktion übergeben, so liefert sie als Ergebnis wieder 100 zurück!?
Wird für
power = 100 und prozent = 115 eingesetzt, wird 200 zurückgegeben!?
// Funktion Geschwindigkeit steigern: Der Wert „speed“ soll um den Prozentsatz „prozent“ erhöht werden.
Diese double-Funktion liefert mit der dargestellten Schreibweise korrekte Rückgabewerte!
Mathematisch liefern die beiden Schreibweisen
power * (1.0 + prozent / 100)
power + power * prozent / 100
gleiche Ergebnisse!
Kann mir jemand erklären, wieso mein Microsoft Visual C++ 2003-Compiler da einen Unterschied macht?
folgende Funktionen habe ich in einem Programm:
Code:
// Funktion Kraft steigern
int addProzent(int power, int prozent)
{
// return (power * (1.0 + prozent / 100));
return (power + power * prozent / 100);
}
// Funktion Geschwindigkeit steigern
double addProzent(double speed, int prozent)
{
return (speed * (1.0 + prozent / 100.0));
}
// Funktion Kraft steigern: Der Wert „power“ soll um den Prozentsatz „prozent“ erhöht werden.
Benutze ich in der ersten Funktion mit den int-Werten obige Schreibweise, ist das Ergebnis bis auf den abgeschnittenen Kommawert korrekt, was aber in Ordnung ist!
Ist die Schreibweise aber wie die Kommentarzeile in derselben Funktion oder so wie in der Geschwindigkeits-steigern-Funktion, so kommen unerwünschte Ergebnisse heraus:
Wird z.Bsp.
power = 100 und prozent = 15 an die Funktion übergeben, so liefert sie als Ergebnis wieder 100 zurück!?
Wird für
power = 100 und prozent = 115 eingesetzt, wird 200 zurückgegeben!?
// Funktion Geschwindigkeit steigern: Der Wert „speed“ soll um den Prozentsatz „prozent“ erhöht werden.
Diese double-Funktion liefert mit der dargestellten Schreibweise korrekte Rückgabewerte!
Mathematisch liefern die beiden Schreibweisen
power * (1.0 + prozent / 100)
power + power * prozent / 100
gleiche Ergebnisse!
Kann mir jemand erklären, wieso mein Microsoft Visual C++ 2003-Compiler da einen Unterschied macht?