ゼロ割

例えば、平均を求めるプログラムを書かせたとしよう。計算自体は問題ない。しかし、データ数をチェックしてゼロ割しないように心がける人が少ない。このような基本的なことができないとプロとはいえない。まして、何度も指摘しても直らないようであれば、プログラマ失格といってよい。
なになに、「以前描いた複素数クラスではチェックしてない」って。それは、C#において、doubleのゼロ割は正当な演算だからである。(整数のゼロ割はエラーである。)
これは、C#において、doubleのとりうる値に、NaNと±∞があるからである。(IEEEにもNaNはあるが。)数値演算の定義域がきちんと定まっているので、(NaNなどを考慮していれば)NaNなどを使うことは間違いではない。例えば、1/0は、∞になるし、0/0はNaNになる。NaNとの演算はまたNaNである。 ∞との演算も∞になる。あるいは、割れば0になる。これらは、学校で習う数学ににているが異なっている。このコンピュータ数学もコンピュータに従事する可能性のある学生は学校で習うべきだろう。(つまり、「整数のゼロ割をしない」ようにするのと同じく常識であるべきだ。)

http://plaza.harmonix.ne.jp/~fakira/turedure/cprog_05.htm#050203