2016-06-14 17 views
-3

Mein Code wirft mir hier eine Gleitkommaausnahme, aber ich kann nicht herausfinden, warum.Floating Point Ausnahme für scheinbar keinen Grund

int i = this -> numerator; 
while(i > 1){ 
    if ((this -> numerator % i == 0) && (this -> denominator % i == 0)) { 
     this -> numerator = this -> numerator/i; 
     this -> denominator = this -> denominator/i; 
    } 
    i = i - 1; 
} 

Ziel ist es, einen Bruchteil zu vereinfachen. Wie du sehen kannst, werden die Dinge nur durch i und i> 1 mod. Dasselbe gilt für die Division. Seltsamerweise wird es weiterhin den Fehler werfen, selbst wenn ich den Code innerhalb der while-Schleife auskommentiere, aber der Code funktioniert gut, wenn ich die while-Schleife vollständig loslasse. Das Gleiche passierte, als ich stattdessen eine for-Schleife verwenden wollte. Was vermisse ich?

+6

Bitte entfernen Sie alle diese 'this ->' s. Sie sind bedeutungslos und ablenkend. –

+0

Wie groß ist 'i' am Loop-Eingang und was sind Werte von' * this'? Was ist die Art von "Zähler" und "Nenner"? – davidbak

+3

Zeigen Sie ein vollständiges Codebeispiel an, das nicht funktioniert. –

Antwort

1

Seltsam wird es hält die Fehler zu werfen, auch wenn ich den Code innerhalb der while-Schleife auf Kommentar,

Dann ist dein Problem in diesem Block von Code nicht. Was ich bis jetzt kompiliert habe und fehlerfrei laufe.

aber der Code funktioniert gut, wenn ich von der while-Schleife loszuwerden vollständig

Dann ist es wahrscheinlich, dass Sie etwas mit variabler i nach diesem Block von Code tun, der die Gleitkomma-Ausnahme macht.

Führen Sie Ihren Code mit einem Debugger aus, um zu überprüfen, wo der Fehler auftritt.

+0

Sie haben Recht. Es sagt mir, dass es einen Fehler in einer anderen Mitgliedsfunktion gibt. Vielen Dank! (ein völlig anderer Block, der nicht i enthält, da ich nicht in Reichweite sein würde) –

+0

Richtig, dann akzeptiere die Antwort, um die Frage zu schließen. – shrike

+0

Nein, die Annahme einer Antwort schließt die Frage nicht, und dies ist keine Antwort. Aber die Frage sollte und wurde geschlossen, da sie die Anforderungen für eine solche Frage auf dieser Website nicht erfüllt. –

Verwandte Themen