
C#の演算でオーバーフローしてるみたいなのですが....
C#の演算でオーバーフローしてるみたいなのですが....
8行8列の逆行列を計算するために
C#で逆行列を掃き出し法を使って計算するプログラムを作ったんですが,どうやら,途中でオーバーフローしているみたいで困っています.
行列の各成分はdouble型で保持しています.
今まで,オーバーフローするような桁数の計算を
プログラムで扱ったことがないので,対策方法がわかりません.
みなさんは,オーバーフローにはどのような対策をしているのでしょうか?
どなたか,知恵を貸していただけないでしょうか?
よろしくお願いします.
投稿日時 - 2010-09-10 03:01:28
演算でオーバーフローになるのは、0に限りなく近い値で除算している場合がほとんどです。
例えば、
1-0.1×10
の計算をしたとき、0になるとは限りません。
処理系によっては、0ではなく、10^(-50)のようなの0に限りなく近い値になる場合があります。
それで除算をするとオーバーフローすることがあります。
対策としては、
0に限りなく近い値は0にする
という処理をします。
(0除算のチェックは当然していますよね)
投稿日時 - 2010-09-10 03:45:37
nag0720さん,回答ありがとうございます.
>(0除算のチェックは当然していますよね)
0除算はチェックしてました.
>対策としては、
>0に限りなく近い値は0にする
>という処理をします。
ということなのですが,具体的には,基準となる「限りなく近い値」はどうやって決めるべきなんでしょうか?
投稿日時 - 2010-09-10 04:25:31
このQ&Aは役に立ちましたか?
12人が「このQ&Aが役に立った」と投票しています