パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

ゼロ除算発生時にデフォルトの値を返すようにしたら、深刻な問題が発生する?」記事へのコメント

  • 割り算させない (スコア:5, 参考になる)

    by Anonymous Coward

    リアルタイム信号処理のプログラム書きますが、
    立ち上がってすぐは入力データが用意されていないでクリアしたバッファの初期値で演算
    (たとえばパイプラインADCとか使っていて入力に遅延がある)
    なんてことは普通にあり得るので、アルゴリズム中に割り算があるとき
    (正規化とかAGCとか)では 0割が発生しないように 除数がゼロかどうか
    あらかじめチェックします。そして、結果を後段アルゴリズムの制約上問題ない値とします。
    例外なんて起こさない方がいいし、誰か書いていましたがそんな機構は無い場合もあるしで
    予測される例外は基本的に排除(生起しないように手を打つ)すべきです。
    データが用意されるまで待てばいいんだけどね。
    演算側の水際でも処置しておかないと安心できない
    つーか、後段の用途によって0割の結果値を吟味するのって普通だと思いますが
    (0で駄目なら非0の微小値とかそもそものアルゴリズムをスキップするとか)
    そういうこと考えないでプログラム書いてるんですかね。

    • by Anonymous Coward

      >チェックに疲れ果てたベテランプログラマー
      本来やりたいことからすれば、余計な処理と言えるわけで。。
      必要なのは分かってるが、堅牢にしようとすればチェック処理の方が多くなるのはもやっとしません?

      • >必要なのは分かってるが、堅牢にしようとすればチェック処理の方が多くなるのはもやっとしません?

        堅牢なことは至上命題で大前提だと思いますよ。高速化とかエレガントなアルゴリズムとかは、その後についてくると思ってます。
        だから、殆どもやっとはしないです、個人的には。
        まぁ、この手のチェックや回避策の処理自体をミドルウェアや言語系でやってくれると助かるんですけどね。

        • by Anonymous Coward

          至上命題ってどういう意味ですか?
          ぐぐっても分かりませんでした。

ハッカーとクラッカーの違い。大してないと思います -- あるアレゲ

処理中...