Problem mit double

15/12/2007 - 15:15 von Jürgen Himmel | Report spam
Hallo,

ich habe folgenden u. a. folgenden Code geschrieben:

...
{
double ccelsius = Convert.ToDouble(Celsiuswert.Text);
double cfahrenheit = ccelsius * 9.0 / 5 + 32;
double ckelvin = ccelsius + 273.2;
double creaumur = ccelsius * 4 / 5;
if (ccelsius < -273.3)
{
Celsiuswert.Clear();
MessageBox.Show("Ein Wert unter -273,2 Grad
Celsius ist physikalisch unmöglich!");
}
Fahrenheitwert.Text = cfahrenheit.ToString();
Kelvinwert.Text = ckelvin.ToString();
Reaumurwert.Text = creaumur.ToString();
}
...

Leider habe ich bei der Ausführung das Problem , dass bei Eingabe eines
Kommawertes in der Nàhe von -273.3 doch immer die entsprechende
Warnungsmeldung erscheint. D. h., wenn ich z. B. eingebe "-273.2" dann
erscheint die Fehlermeldung "Ein Wert unter -273,2 Grad Celsius ist
physikalisch unmöglich!", obwohl der Wert über -273.3 liegt. Was habe
ich falsch gemacht oder gedacht und was müsste ich àndern?

Gruß
Jürgen
 

Lesen sie die antworten

#1 David Weber - Stephan
15/12/2007 - 16:49 | Warnen spam
Hallo,
Das Problem liegt in der Konvertierung von dem Inhalt der Textbox zu
double.
double ccelsius = Convert.ToDouble(Celsiuswert.Text);






Diese Funktion konvertiert je nach Làndereinstellung die Kommastelle anders.
Also bei der Eingabe von "-273,2" in die Textbox ist alles OK.
Sollte da aber nun ein "Punkt" stehen, wird daraus ein "-2732".
Somit liefert "if (ccelsius < -273.3)" dort bei dem Vergleich "-273.2" und
"-2732" ein True.
:)

Mit freundlichen Grüssen,
David Weber - Stephan

"Jürgen Himmel" schrieb im Newsbeitrag
news:fk0ni0$tcm$00$
Hallo,

ich habe folgenden u. a. folgenden Code geschrieben:

...
{
double ccelsius = Convert.ToDouble(Celsiuswert.Text);
double cfahrenheit = ccelsius * 9.0 / 5 + 32;
double ckelvin = ccelsius + 273.2;
double creaumur = ccelsius * 4 / 5;
if (ccelsius < -273.3)
{
Celsiuswert.Clear();
MessageBox.Show("Ein Wert unter -273,2 Grad Celsius
ist physikalisch unmöglich!");
}
Fahrenheitwert.Text = cfahrenheit.ToString();
Kelvinwert.Text = ckelvin.ToString();
Reaumurwert.Text = creaumur.ToString();
}
...

Leider habe ich bei der Ausführung das Problem , dass bei Eingabe eines
Kommawertes in der Nàhe von -273.3 doch immer die entsprechende
Warnungsmeldung erscheint. D. h., wenn ich z. B. eingebe "-273.2" dann
erscheint die Fehlermeldung "Ein Wert unter -273,2 Grad Celsius ist
physikalisch unmöglich!", obwohl der Wert über -273.3 liegt. Was habe ich
falsch gemacht oder gedacht und was müsste ich àndern?

Gruß
Jürgen

Ähnliche fragen