2009年5月29日金曜日

【VB2005】0除算でエラーにならない。

 久しぶりの投稿。新人に電卓プログラムを作らせていて、意地悪のつもりで、「その数字を0で割ったらどうなる?」と言って実行させたら・・・。普通に動いちゃった。「あれ??????????」とこっちがパニックになってしまいました。んで調査したらあちこちに書いてますが、忘れないためにメモ。

 試しに以下のようなコードを書いて実行すると「∞」と表示される。

Private Sub Calc()
Label.Text = CLong(TextBox1.Text) / 0
End Sub

 どうやら、VB.NETで上記のようなコードを書いた場合、暗黙的にDoubleに変換され、倍(単)精度での0除算で無限となるのは仕様なそうな・・・

 確かに、0以外で割った場合に勝手に小数点が表示されるのは便利と言えば便利ですが、さすがに0で割ったときに「∞」無限と表示されるのは、頂けないなぁ・・・。こんなもん業務で使った日には目もあてられません><

 要するに、整数、小数を使う場合はちゃんと使い分けなさいということで、除算で整数のみを使用するなら「¥」を使うか、Decimal型で計算しろと言うことでした。

 しかし、今までいろんな言語やってきたけど、これはビックリしました。なんか今まで自分がやってきたことがいっきに崩れ去った瞬間でもありましたw

 また、人に教えるってのは、本当に難しいと実感した瞬間でした・・・トホホ。人に教える場合、固定観念を捨てて前もって調べる必要がありますね^^;

0 件のコメント: