2016-06-14 22 views
-3

私のコードはここに浮動小数点例外を投げていますが、私はその理由を理解できません。一見無理由の浮動小数点例外

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; 
} 

目的は分数を簡略化することです。あなたが見ることができるように、物事はiとi> 1によってmodを得るだけです。分裂についても同じことが起こります。不思議なことに、たとえwhileループ内でコードをコメントアウトしても、エラーを投げつけてしまいますが、whileループを完全に取り除くとコードは正常に動作します。 forループを代わりに使用しようとしたときも同じことが起こりました。私は何が欠けていますか?私は、whileループ内のコードをコメントアウトしても、それはエラーを投げ続ける不思議な

+6

これらのすべてを削除してください。彼らは無意味で気を散らす。 –

+0

ループ入口にはどのくらいの大きさがあり、 '* this'の値は?その点で、分子と分母の種類は何ですか? – davidbak

+3

動作しない完全なコード例を表示します。 –

答えて

1

は、その後、あなたの問題は、コードのこのブロックではありません。これまでのところ、コンパイルしてエラーなしで実行しています。

私はwhileループを完全

を取り除く場合は、コードが正常に動作します。そして、それはあなたが浮動小数点例外を作るコードのこのブロックの後に変数iで何かをやっている可能性があります。

デバッガでコードを実行して、エラーの発生場所を確認します。

+0

あなたはそうです。これは、別のメンバー関数にエラーがあることを伝えています。ありがとう! (しかし、私が範囲に含まれないので私が含まれていないまったく別のブロック) –

+0

右、質問を閉じる答えを受け入れます。 – shrike

+0

いいえ、回答を受け入れても問題は解決されませんが、これは答えではありません。しかし、問題は、このサイトに関するこのような質問の要件を満たしていないと判断され、閉鎖されている必要があります。 –

関連する問題