何か言い過ぎましたか?
ソースを全部とは言ってません。
どこか無理な計算をしているから
「-1.#IND000000000000」のエラーがでるのです。
なのでどんな計算をしているのか逆に教えて欲しいのです。
「-1.#IND000000000000」を知っているということは
デバックモードかテストで画面に表示しているのでしょうから、
そこの処理を教えてほしいのです。
これで分りますか。
> もう無理そうなんで別のとこで聞いてみます。
MSの人に聞く以外、どこにいっても同じではなかろうか?
>MSの人に聞く以外、どこにいっても同じではなかろうか?
この件でなくMSに聞いたことあるけど、だめなときは断られました。
「この件は分りません。インシデントはキャンセルとさせていただきます。」
だそうです。
何か言い過ぎたかな?
なんか気になります。
焦っているんだろ。
本人からしたら、出来るかどうか判らない話で長々引っぱられるくらいなら
不可能という回答のほうがいいくらいの事態なんだろ。
そもそも
オーバーフローが起きた場所を見つけ出して対応するというより
すべての浮動小数点演算において
オーバーフロー対策しているべきなんだろうけどね。
正直、メモリの値でブレイクさせるのって
フリーズしたのかと思うくらい一向に処理が進まないので
まったく激しく使い物にならん。
特にいつどこで起きるかわからないなら使えねー
オーバーフローって__tryにもtryでもダメなんだよな。
でも、浮動小数点オーバーフロー例外を起こさせる方法が見つかったよ。
デバッガで浮動小数点オーバーフロー例外発生したら止めるように設定したら
発生場所の次をさしているけどちゃんとオーバーフローが起きるとき止められた。
ブレイクポイントじゃないので処理を続けることはできないけどね。
強制終了しかないかもね。よくわからんが。
私の結論
変数=-1.#IND000000000000で止める方法はわかりませんでした。
浮動小数点制御ワードの取得と設定を行います。
浮動小数点のオーバフローの場合は計算の方法によって変わると思います。
1. 自分で独自の計算を行う。
本人で対処するしかないです。
2. 測定データ等を外部からもらう。
小数点第何位かきちんと決める。
出来たら整数値でもらってこちらのソフト上で割算する。
3. 独自の計算でも同じく最大値を決めて、計算途中でも
その最大値を超えた場合は、オーバフローになる前に
エラーとして処理する。
#最大値を超えたらエラーとしてはねるということは
ユーザーと決めないといけないけど
> > もう無理そうなんで別のとこで聞いてみます。
> MSの人に聞く以外、どこにいっても同じではなかろうか?
御意。大体、回答者って被ってるしね。
# setjmp, longjmp あたりでオーバーフローを検知できたような気もするが、
# 気のせいかな? signal関数を使って浮動小数点エラーの検知、だっけ?
なんだよ!
そりゃ値によるブレイクポイントじゃないけどさ
例外でオーバーフローの起きたところ(実際は次の行をさしているけど)で
デバッガがとめてくれる方法を見つけたっていうのに
そんな俺は浮動小数点は誤差があるからなるべく使わないが、
整数t型はもっとオーバーフローに神経使うってなはなはなははは