アカウント名:
パスワード:
その人が作ろうとしてるプログラムにおいて、0除算が発生した時に、どう云う動作をするのが「正しい」の?? 話は、それからだ。
正しい答えは一つ。ゼロ除算が発生したらエラーアベンド。
プログラムは何も言われなくとも除数が0になった場合の処理があるべきで、仕様にそれがない場合の想定はエラーしかない。
そういえば昔やったことがあるけど、除算などをマクロにするルールにして、そのマクロに除数0なら0を返すという処理を入れればいい。そういうのはローカルルールでやるべきことだ。
計算結果を何に使うかで変わってきますよ。3D空間の座標系計算のような場合は、0が引数に入ってきた場合を始めにトラップして、想定している範囲の最大の数値を返したりとかやりますよ。組み込み系の場合には、自分で仕様書く場合は0が突っ込まれないように回避策を考えたりもしますし、仕様書が上から降ってくる場合には「0で割り算する可能性があるんだけど、その場合どうします?(´・ω・`)」とコードを書いてる時でもお伺いを立てたりもしましたよ。
要は、データ構造を作る段階で、可能ならば、割り算の分母に0が突っ込まれた場合の数値とかトラップ処理とかを入れ込んで考える必要があると言う事で。
エラーでプログラムが異常系に行くとか止まっちゃうとかAssertで強制終了しちゃうというのは、最悪のシナリオだという感覚がどうしてもありますけどね。分母0の割り算でそうなってしまうのは、ヌルポインタでそうなるのと同じ位「ダサい」と言う感覚が。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
※ただしPHPを除く -- あるAdmin
……いや、だから…… (スコア:3)
その人が作ろうとしてるプログラムにおいて、0除算が発生した時に、どう云う動作をするのが「正しい」の??
話は、それからだ。
Re: (スコア:0)
正しい答えは一つ。
ゼロ除算が発生したらエラーアベンド。
プログラムは何も言われなくとも除数が0になった場合の処理があるべきで、
仕様にそれがない場合の想定はエラーしかない。
そういえば昔やったことがあるけど、
除算などをマクロにするルールにして、そのマクロに除数0なら0を返すという処理を入れればいい。
そういうのはローカルルールでやるべきことだ。
Re:……いや、だから…… (スコア:2)
計算結果を何に使うかで変わってきますよ。
3D空間の座標系計算のような場合は、0が引数に入ってきた場合を始めにトラップして、想定している範囲の最大の数値を返したりとかやりますよ。
組み込み系の場合には、自分で仕様書く場合は0が突っ込まれないように回避策を考えたりもしますし、仕様書が上から降ってくる場合には「0で割り算する可能性があるんだけど、その場合どうします?(´・ω・`)」とコードを書いてる時でもお伺いを立てたりもしましたよ。
要は、データ構造を作る段階で、可能ならば、割り算の分母に0が突っ込まれた場合の数値とかトラップ処理とかを入れ込んで考える必要があると言う事で。
エラーでプログラムが異常系に行くとか止まっちゃうとかAssertで強制終了しちゃうというのは、最悪のシナリオだという感覚がどうしてもありますけどね。分母0の割り算でそうなってしまうのは、ヌルポインタでそうなるのと同じ位「ダサい」と言う感覚が。