Berechnung = 0?!?! Brauche mal Hilfe



  • Hab folgendes Problem, hab diese schöne Rechnung hier gebastelt:

    UpdateData (TRUE);
    	m_sCelsius.Replace(",",".");
    	m_sFahrenheit.Replace(",",".");
    	m_sKelvin.Replace(",",".");
    	m_sReaumur.Replace(",",".");
    	double m_fCelsius = atoi(m_sCelsius);
    	double m_fFahrenheit = atoi(m_sFahrenheit);
    	double m_fKelvin = atoi(m_sKelvin);
    	double m_fReaumur = atoi(m_sReaumur);
    	switch(m_iAuswahlkelvin)
    	{
    	case 0:
    		switch(m_iBerechnungsart)
    		{
    		case 0:
    			m_fKelvin = (m_fCelsius + 273.0);
    			m_fFahrenheit = ((m_fCelsius * (9.0 / 5.0)) + 32.0);
    			m_fReaumur = (m_fCelsius * (4.0 / 5.0));
    			m_sCelsius.Format("%d", m_fCelsius);
    			m_sFahrenheit.Format("%d", m_fFahrenheit);
    			m_sKelvin.Format("%d", m_fKelvin);
    			m_sReaumur.Format("%d", m_fReaumur);
    			m_sCelsius.Replace(".",",");
    			m_sFahrenheit.Replace(".",",");
    			m_sKelvin.Replace(".",",");
    			m_sReaumur.Replace(".",",");
    			UpdateData(FALSE);
    			break;
    		case 1:
    			m_fKelvin = (((m_fFahrenheit - 32.0) * (5.0 / 9.0)) + 273.0);
    			m_fCelsius = ((m_fFahrenheit - 32.0) * (5.0 / 9.0));
    			m_fReaumur = ((m_fFahrenheit - 32.0) * (4.0 / 9.0));
    			m_sCelsius.Format("%d", m_fCelsius);
    			m_sFahrenheit.Format("%d", m_fFahrenheit);
    			m_sKelvin.Format("%d", m_fKelvin);
    			m_sReaumur.Format("%d", m_fReaumur);
    			m_sCelsius.Replace(".",",");
    			m_sFahrenheit.Replace(".",",");
    			m_sKelvin.Replace(".",",");
    			m_sReaumur.Replace(".",",");
    			UpdateData(FALSE);
    			break;
    		case 2:
    			m_fCelsius = (m_fKelvin - 273.0);
    			m_fFahrenheit = (((m_fKelvin - 273.0) * (9.0 / 5.0)) + 32.0);
    			m_fReaumur = ((m_fKelvin - 273.0) * (4.0 / 5.0));
    			m_sCelsius.Format("%d", m_fCelsius);
    			m_sFahrenheit.Format("%d", m_fFahrenheit);
    			m_sKelvin.Format("%d", m_fKelvin);
    			m_sReaumur.Format("%d", m_fReaumur);
    			m_sCelsius.Replace(".",",");
    			m_sFahrenheit.Replace(".",",");
    			m_sKelvin.Replace(".",",");
    			m_sReaumur.Replace(".",",");
    			UpdateData(FALSE);
    			break;
    		case 3:
    			m_fCelsius = (m_fReaumur * (5.0 / 4.0));
    			m_fFahrenheit = ((m_fReaumur * (9.0 / 4.0)) + 32.0);
    			m_fKelvin = ((m_fReaumur * (5.0 / 4.0)) + 273.0);
    			m_sCelsius.Format("%d", m_fCelsius);
    			m_sFahrenheit.Format("%d", m_fFahrenheit);
    			m_sKelvin.Format("%d", m_fKelvin);
    			m_sReaumur.Format("%d", m_fReaumur);
    			m_sCelsius.Replace(".",",");
    			m_sFahrenheit.Replace(".",",");
    			m_sKelvin.Replace(".",",");
    			m_sReaumur.Replace(".",",");
    			UpdateData(FALSE);
    			break;
    		}
    		break;
    	case 1:
    		switch(m_iBerechnungsart)
    		{
    		case 0:
    			m_fKelvin = (m_fCelsius + 273.15);
    			m_fFahrenheit = ((m_fCelsius * (9.0 / 5.0)) + 32.0);
    			m_fReaumur = (m_fCelsius * (4.0 / 5.0));
    			m_sCelsius.Format("%d", m_fCelsius);
    			m_sFahrenheit.Format("%d", m_fFahrenheit);
    			m_sKelvin.Format("%d", m_fKelvin);
    			m_sReaumur.Format("%d", m_fReaumur);
    			m_sCelsius.Replace(".",",");
    			m_sFahrenheit.Replace(".",",");
    			m_sKelvin.Replace(".",",");
    			m_sReaumur.Replace(".",",");
    			UpdateData(FALSE);
    			break;
    		case 1:
    			m_fKelvin = (((m_fFahrenheit - 32.0) * (5.0 / 9.0)) + 273.15);
    			m_fCelsius = ((m_fFahrenheit - 32.0) * (5.0 / 9.0));
    			m_fReaumur = ((m_fFahrenheit - 32.0) * (4.0 / 9.0));
    			m_sCelsius.Format("%d", m_fCelsius);
    			m_sFahrenheit.Format("%d", m_fFahrenheit);
    			m_sKelvin.Format("%d", m_fKelvin);
    			m_sReaumur.Format("%d", m_fReaumur);
    			m_sCelsius.Replace(".",",");
    			m_sFahrenheit.Replace(".",",");
    			m_sKelvin.Replace(".",",");
    			m_sReaumur.Replace(".",",");
    			UpdateData(FALSE);
    			break;
    		case 2:
    			m_fCelsius = (m_fKelvin - 273.15);
    			m_fFahrenheit = (((m_fKelvin - 273.15) * (9.0 / 5.0)) + 32.0);
    			m_fReaumur = ((m_fKelvin - 273.15) * (4.0 / 5.0));
    			m_sCelsius.Format("%d", m_fCelsius);
    			m_sFahrenheit.Format("%d", m_fFahrenheit);
    			m_sKelvin.Format("%d", m_fKelvin);
    			m_sReaumur.Format("%d", m_fReaumur);
    			m_sCelsius.Replace(".",",");
    			m_sFahrenheit.Replace(".",",");
    			m_sKelvin.Replace(".",",");
    			m_sReaumur.Replace(".",",");
    			UpdateData(FALSE);
    			break;
    		case 3:
    			m_fCelsius = (m_fReaumur * (5.0 / 4.0));
    			m_fFahrenheit = ((m_fReaumur * (9.0 / 4.0)) + 32.0);
    			m_fKelvin = ((m_fReaumur * (5.0 / 4.0)) + 273.15);
    			m_sCelsius.Format("%d", m_fCelsius);
    			m_sFahrenheit.Format("%d", m_fFahrenheit);
    			m_sKelvin.Format("%d", m_fKelvin);
    			m_sReaumur.Format("%d", m_fReaumur);
    			m_sCelsius.Replace(".",",");
    			m_sFahrenheit.Replace(".",",");
    			m_sKelvin.Replace(".",",");
    			m_sReaumur.Replace(".",",");
    			UpdateData(FALSE);
    			break;
    		}
    		break;
    	}
    

    Die soll von Eingabefeldern (Strings) die Kommas in Punkte verwandeln und danach den String zu double konvertieren. Danach soll mit dem double gerechnet werden und nach der Rechnung das double zu String umkonvertiert werden und wieder ausgegeben werden. Es kommt aber immer 0 Raus, und ich verstehe nicht warum. Seht ihr da drin einen Fehler??



  • Hallo !

    Ersetze doch mal in deinen Format-Befehlen die "%d" durch "%g".

    Tschüss



  • atoi ist auch nicht so gut, wenn du doubles haben willst.



  • Ich habe den Code mal ein bisschen verkürzt,und die richtigen Befehle eingefügt.

    UpdateData (TRUE); 
        m_sCelsius.Replace(",","."); 
        m_sFahrenheit.Replace(",","."); 
        m_sKelvin.Replace(",","."); 
        m_sReaumur.Replace(",","."); 
        double m_fCelsius = atof(m_sCelsius); 
        double m_fFahrenheit = atof(m_sFahrenheit); 
        double m_fKelvin = atof(m_sKelvin); 
        double m_fReaumur = atof(m_sReaumur); 
        switch(m_iAuswahlkelvin) 
        { 
        case 0: 
            switch(m_iBerechnungsart) 
            { 
            case 0: 
                m_fKelvin = (m_fCelsius + 273.0); 
                m_fFahrenheit = ((m_fCelsius * (9.0 / 5.0)) + 32.0); 
                m_fReaumur = (m_fCelsius * (4.0 / 5.0)); 
            break; 
            case 1: 
                m_fKelvin = (((m_fFahrenheit - 32.0) * (5.0 / 9.0)) + 273.0); 
                m_fCelsius = ((m_fFahrenheit - 32.0) * (5.0 / 9.0)); 
                m_fReaumur = ((m_fFahrenheit - 32.0) * (4.0 / 9.0)); 
            break; 
            case 2: 
                m_fCelsius = (m_fKelvin - 273.0); 
                m_fFahrenheit = (((m_fKelvin - 273.0) * (9.0 / 5.0)) + 32.0); 
                m_fReaumur = ((m_fKelvin - 273.0) * (4.0 / 5.0)); 
            break; 
            case 3: 
                m_fCelsius = (m_fReaumur * (5.0 / 4.0)); 
                m_fFahrenheit = ((m_fReaumur * (9.0 / 4.0)) + 32.0); 
                m_fKelvin = ((m_fReaumur * (5.0 / 4.0)) + 273.0); 
            break; 
            } 
            break; 
        case 1: 
            switch(m_iBerechnungsart) 
            { 
            case 0: 
                m_fKelvin = (m_fCelsius + 273.15); 
                m_fFahrenheit = ((m_fCelsius * (9.0 / 5.0)) + 32.0); 
                m_fReaumur = (m_fCelsius * (4.0 / 5.0)); 
                break; 
            case 1: 
                m_fKelvin = (((m_fFahrenheit - 32.0) * (5.0 / 9.0)) + 273.15); 
                m_fCelsius = ((m_fFahrenheit - 32.0) * (5.0 / 9.0)); 
                m_fReaumur = ((m_fFahrenheit - 32.0) * (4.0 / 9.0)); 
                break; 
            case 2: 
                m_fCelsius = (m_fKelvin - 273.15); 
                m_fFahrenheit = (((m_fKelvin - 273.15) * (9.0 / 5.0)) + 32.0); 
                m_fReaumur = ((m_fKelvin - 273.15) * (4.0 / 5.0)); 
                break; 
            case 3: 
                m_fCelsius = (m_fReaumur * (5.0 / 4.0)); 
                m_fFahrenheit = ((m_fReaumur * (9.0 / 4.0)) + 32.0); 
                m_fKelvin = ((m_fReaumur * (5.0 / 4.0)) + 273.15); 
                break; 
            } 
            break; 
        }
        m_sCelsius.Format("%g", m_fCelsius); 
        m_sFahrenheit.Format("%g", m_fFahrenheit); 
        m_sKelvin.Format("%g", m_fKelvin); 
        m_sReaumur.Format("%g", m_fReaumur); 
        m_sCelsius.Replace(".",","); 
        m_sFahrenheit.Replace(".",","); 
        m_sKelvin.Replace(".",","); 
        m_sReaumur.Replace(".",","); 
        UpdateData(FALSE);
    


  • void Klasse::DeinDing()
    {
        UpdateData (TRUE);
        m_sCelsius.Replace(",",".");  
        m_sFahrenheit.Replace(",",".");  
        m_sKelvin.Replace(",",".");  
        m_sReaumur.Replace(",",".");  
    
        double m_fCelsius = atof(m_sCelsius); 
        double m_fFahrenheit = atof(m_sFahrenheit); 
        double m_fKelvin = atof(m_sKelvin); 
        double m_fReaumur = atof(m_sReaumur); 
    
        double temp = 273.0:
    
        switch(m_iAuswahlkelvin) 
        { 
        case 0: 
            temp = 273.0;
            break; 
        case 1:
            temp = 273.15;
            break; 
        }
    
        switch(m_iBerechnungsart) 
        { 
        case 0: 
            m_fKelvin = (m_fCelsius + temp); 
            m_fFahrenheit = ((m_fCelsius * (9.0 / 5.0)) + 32.0); 
            m_fReaumur = (m_fCelsius * (4.0 / 5.0));
            break; 
        case 1: 
            m_fKelvin = (((m_fFahrenheit - 32.0) * (5.0 / 9.0)) + temp); 
            m_fCelsius = ((m_fFahrenheit - 32.0) * (5.0 / 9.0)); 
            m_fReaumur = ((m_fFahrenheit - 32.0) * (4.0 / 9.0)); 
            break; 
        case 2: 
            m_fCelsius = (m_fKelvin - temp); 
            m_fFahrenheit = (((m_fKelvin - temp) * (9.0 / 5.0)) + 32.0); 
            m_fReaumur = ((m_fKelvin - temp) * (4.0 / 5.0)); 
            break; 
        case 3: 
            m_fCelsius = (m_fReaumur * (5.0 / 4.0)); 
            m_fFahrenheit = ((m_fReaumur * (9.0 / 4.0)) + 32.0); 
            m_fKelvin = ((m_fReaumur * (5.0 / 4.0)) + temp); 
            break; 
        } 
    
        m_sCelsius.Format("%g", m_fCelsius);  
        m_sFahrenheit.Format("%g", m_fFahrenheit);  
        m_sKelvin.Format("%g", m_fKelvin);  
        m_sReaumur.Format("%g", m_fReaumur);  
        m_sCelsius.Replace(".",",");  
        m_sFahrenheit.Replace(".",",");  
        m_sKelvin.Replace(".",",");  
        m_sReaumur.Replace(".",",");   
    
        UpdateData(FALSE);
    }
    

    Hab mich einwenig gespielt mit deinem Source 😉

    So hast du doch weniger arbeit wenn du etwas veränderst oder?

    TSCHAU, Sigi

    Nachtrag: mist jetzt war ich doch noch zu langsam :p



  • Du warst zwar langsamer,aber dafür auch kürzer


Anmelden zum Antworten