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