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 gestellt

    wird.

    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


Anmelden zum Antworten