Laden...

[gelöst] double durch Null Teilen wirft keine Exception

Erstellt von AllForOne vor 13 Jahren Letzter Beitrag vor 13 Jahren 3.667 Views
A
AllForOne Themenstarter:in
14 Beiträge seit 2010
vor 13 Jahren
[gelöst] double durch Null Teilen wirft keine Exception

Hallo Com,
Mein Problem bei einer einfachen Taschenrechner-Anwendung besteht in einer Typumwandlung.
Und zwar wenn ich den String in Integer umwandel dann mit Try/Catch bei der TEilung durch 0 eine Exception abfangen will funktioniert das super. Jedoch bei der Typumwandlung von string nach double wird keine Exception geworfen sondern das ergbenis +unendlich ausgegeben.


 private void Geteilt_Click(object sender, EventArgs e)
        {

            try
            {
                 Ergebnis.Text = ((Convert.ToDouble(Zahl1.Text)) / (Convert.ToDouble(Zahl2.Text))).ToString();
            
            }
            catch(Exception f)
            {
              MessageBox.Show(f.Message);
           }

        }

Bei dem Code kommt dann bei den Einagbewerten von Zahl1= 2 und Zahl2= 0 das Ergebnis von +unendlich.


private void Geteilt_Click(object sender, EventArgs e)
        {

            try
            {
                 Ergebnis.Text = ((Convert.ToInt64(Zahl1.Text)) / (Convert.ToInt64(Zahl2.Text))).ToString();
            
            }
            catch(Exception f)
            {
              MessageBox.Show(f.Message);
           }

        }

Hier bei der gleichen Eingabe wird die Exception in der MessageBox ausgegeben.
Nur so kann ich ja nicht mit Kommazahlen rechnen.

Wo liegt der Fehler?
Meiner Vermutung nach muss die Zahl2 bei dem Konvertieren von string in double in eine Zahl ähnlich wie 0,00000000000000001 konvertiert werden,sodass ein WErt +unendlich sein kann.

Ich weiß einfach nicht merh weiter. Forensuche habe ich schon benutzt.

F
155 Beiträge seit 2009
vor 13 Jahren

Hallo,

das hat nichts mit der Umwandlung in einen String zu tun, das ist per Standard so festgelegt
( Double-Struktur ), der Wert wird als unendlich dargestellt wenn er außerhalb des Wertebereiches kommt.

Mit der Methode IsInfinity Methode von double kannst du überprüfen ob der Wert außerhalb des Wertebereiches ist.

fz

"We better hurry up and start coding, there are going to be a lot of bugs to fix."

1.552 Beiträge seit 2010
vor 13 Jahren

Hallo AllForOne,

das ist normal.
0/0 = NaN
irgendetwad/0 = infinity
wobei zu beachten ist dass die Zahlen immer vom Typ double sind. Unter anderem bei Integer sieht es anders aus, denn dort wird ein Fehler geworfen.

Gruß
Michael

Mein Blog
Meine WPF-Druckbibliothek: auf Wordpress, myCSharp

B
342 Beiträge seit 2006
vor 13 Jahren

Hi,
Ich würde dir außerdem noch empfehlen, die Eingabe zu prüfen anstatt auf die Exception zu warten.
Grüße,
Big Al

Da man Spatzen nicht mit Kanonen jagt, sollte man auch nicht mit Computern auf Spatzenhirne losgehen.

A
AllForOne Themenstarter:in
14 Beiträge seit 2010
vor 13 Jahren
[gelöst]

Danke ihr beiden!!