Funktion fehlerhaft - bitte helfen
-
Hi Leute, kann mir mal jemand sagen, was an dieser Funktion falsch ist?:
typedef enum { NORMAL, ABRUNDEN, AUFRUNDEN, } nMode; long Round(long lUnrounded, UINT nMode = NORMAL) { CString sZahl = ""; sZahl.Format("%f", lUnrounded); if(nMode == NORMAL) { if(CharToNum(sZahl[1]) >= 5) { if(sZahl[0] == '1') sZahl.SetAt(0, '2'); else if(sZahl[0] == '2') sZahl.SetAt(0, '3'); else if(sZahl[0] == '3') sZahl.SetAt(0, '4'); else if(sZahl[0] == '4') sZahl.SetAt(0, '5'); else if(sZahl[0] == '5') sZahl.SetAt(0, '6'); else if(sZahl[0] == '6') sZahl.SetAt(0, '7'); else if(sZahl[0] == '7') sZahl.SetAt(0, '8'); else if(sZahl[0] == '8') sZahl.SetAt(0, '9'); else if(sZahl[0] == '9') { sZahl.SetAt(0, '1'); for(int i = 1; i < sZahl.GetLength(); i++) { sZahl.SetAt(i, '0'); } sZahl += "0"; } for(int i = 1; i < sZahl.GetLength(); i++) { sZahl.SetAt(i, '0'); } } else { for(int i = 1; i < sZahl.GetLength(); i++) { sZahl.SetAt(i, '0'); } } } //abrunden else if(nMode == ABRUNDEN) { for(int i = 1; i < sZahl.GetLength(); i++) { sZahl.SetAt(i, '0'); } } //aufrunden else if(nMode == AUFRUNDEN) { sZahl.SetAt(0, '1'); for(int i = 1; i < sZahl.GetLength(); i++) { sZahl.SetAt(i, '0'); } sZahl += "0"; } return atoi(sZahl); }
Diese Funktion soll eine Zahl, z.B. "549865498" runden:
auf 500000000, wenn nMode auf ABRUNDEN gestellt wird,
auf 600000000, wenn nMode auf AUFRUNDEN gestellt wird oder
auf 500000000 oder 600000000, je nach dem, ob die zweite Ziffer > 5 ist, wenn nMode auf NORMAL gestelltwird.
Irgendwie gibt die Funktion aber immer 0 oder 100000000 zurück
Happosai
[edit] OK, ich seh schon. Na dann versuch' ich mal, ne andere Funktion zu schreiben. [/edit]
[ Dieser Beitrag wurde am 22.01.2003 um 17:17 Uhr von Happosai editiert. ]
-
Aaahja
Funktion VerringerePSMeinesAutos()
{
WandleMeinAutoInEinenMercedes()
ErsetzeMercedesMotorDurch20PSMotor()
VeränderDieKarosserieSoDassSieMeinemAutoEntspricht()
GibVerändertesAutoZurück()
}
-
Irgendwie gibt die Funktion aber immer 0 oder 100000000 zurück
Dan guck dir mal den Code zum Auf- bzw. Abrunden an und überleg mal ganz scharf...
BTW: Wofür gibt es eigentlich die Operatoren / und %. Naja, wenn du meinst, dass das mit Strings schneller geht....
Muhuhaha