下記の記事が公開されました。
熱血VBプログラマ応援団 第5回 XML Webサービスに待ち構える暗黒面(前編)―― VB.NETで軽やかに乗り越えて光を目指せ! ――
よく見たら下記記事の公開をここに書いていませんでしたね。
熱血VBプログラマ応援団 第4回 スマート・クライアントはVBプログラマのためにある ―― Webアプリケーションの弱点を克服した新技術をVB.NETで! ――
それはさておき、今回の第5回 XML Webサービスに待ち構える暗黒面(前編)ですが、1箇所、「しまった!」と思う失敗があります。非常に基本的なところです。
どこだか分かりますが?
ちょっと考えてみてください。
答がすぐ見えないようにするために長い空間を確保 §
シ
ン
キ
ン
グ
タ
イ
ム
で
す
。
あ
え
て
が
ん
ば
ろ
う
と
思
う
人
は
、
ぜ
ひ
自
分
で
考
え
て
み
て
く
だ
さ
い
。
こ
の
、
あ
え
て
が
通
じ
な
い
と
言
わ
れ
る
時
代
に
無
謀
と
も
思
い
ま
す
が
。
答はそれは経過時間の表記です。
XML Webサービスを使った版 00:01:39.1144962
1つのプログラム内で完結する版 00:00:00.0100146
というように書いてありますが、もちろん、表示された結果をCOP&PASTEした結果です。しかし、このように書くことは誤りなのです。
それはなぜか?
本来、工学系の人なら常識として問われることだと思います。分かっている人には簡単すぎると思いますが、知らない人も多いようなので、あえて書いてみます。
分からない人は、考えてみてください。
もう一度、答がすぐ見えないようにするために長い空間を確保 §
シ
ン
キ
ン
グ
タ
イ
ム
で
す
。
あ
え
て
が
ん
ば
ろ
う
と
思
う
人
は
、
ぜ
ひ
自
分
で
考
え
て
み
て
く
だ
さ
い
。
こ
の
、
あ
え
て
が
通
じ
な
い
と
言
わ
れ
る
時
代
に
無
謀
と
も
思
い
ま
す
が
。
有効桁数という問題 §
ここに表示されている00:01:39.1144962のような値は、DateTime.Nowプロパティの差分ですが、このプロパティが提供する時刻の精度と、DateTime型が表現できる精度は異なります。この表示は、DateTime型の精度で文字列化した結果です。しかし、この値の全ての桁に意味はありません。
Nowプロパティの仕様を調べると、以下のように書かれています。
Windows NT 3.5 以降 近似解像力 10 ミリ秒
(ふと「近似解像力」って何だろうと疑問を持ちつつ、それは横に置いて進めると)
ここで示されると通り、解像度が10ミリ秒だとすれば、10ミリ秒よりも小さな時間は計測できないことになります。つまり、10ミリ秒よりも下の桁は、意味を持たないのです。それらは、単なる計算上の都合で出現する数値に過ぎず、実際の時間を何ら反映していません。
そのような意味のない数字を書くことは、誤った行為です。
(ちなみに、数字のトリックで相手を騙す悪党の場合は、それを書くことによって達成することもあり得ます。その場合は、意味のない数字を書くことは正しい悪行です)
つまり、もしこの原稿が学生時代のレポートなら、即刻再提出になるような重大なミステークだった、と言うわけです。(その上、「横に置いて進める」と書いた箇所もあるので、更に減点が付きますね)