NumCmp・ヘルプ

戻る ] ホーム ] 上へ ]

上の階層 P_PCのプログラムサポート ] MTV3000W on DELL Dimension XPS Gen2 ] 魅惑のトピックス ] ユーロと橋 ]
同じ階層 更新履歴 ] Mfai・簡易ヘルプ ] [ NumCmp・ヘルプ ]
下の階層

動作環境

 Microsoft® Visual Basic 6.0 Professional Edition SP5のライブラリが必要です。
  • インストールは、numcmp.exeをどこかに置いてください。
  • アンインストールは、numcmp.exeと、同じフォルダに作成されるnumcmp.iniを削除してください。レジストリは触りません。

概要

目的

 コンマ、空白あるいはタブで区切られたテキストファイルを、表計算ソフトのワークシートのようにセルに読み込んで、各セル同士で比較するプログラムです。

 マトリクスの出力など、多数の数字の羅列同士の比較を主目的として作成しました。計算プログラムを修正したことにより、修正前の出力と意図せず変わってしまっていないかどうか、チェックすることなどができます。

 エクセルでも、それぞれのファイルを別のワークシートに読み込んで、3枚目のワークシート上で串刺し比較すれば、同じことができます。ただ、面倒です。エクセルで簡単にできる方法があれば、是非教えてください。

特記事項

デリミタの処理

 numcmpでは、コンマ、空白あるいはタブは、いくつ入っていても、1つと見なし(てしまい)ます。よって、2つのテキストファイルがこれらのデリミタのみで異なっていても、身の部分で比較できます。

数字の比較

 例えば、1.234E+01と1.234E+001について、

  • 数字としてはほとんど同じですが、文字列として比較すると、異なっていることになります。
  • 小数点以下4桁目が異なっても、それがパソコンの打切り誤差による場合は、同じと見なせることもあります。

 numcmpでは、これらの場合に、それぞれ、同じと判断したり、差の割合のオーダーを表示したりします。


内容

オーダーの比較方法

 浮動小数点数に「=」を使うのはセンスがないですが、それでも「=0」だと判断してくれたり、2つの数字を同じと判断してくれたりすることはあります。

もし、両方のセルが数値なら、

 数値として比較します。

もし両方の数値が全く同じなら、何も表示しない。

もし両方の数値が異なるなら、

もしFile 1の数値が0なら、File 2の数値の常用対数(Log10)の負値を表示。

もしFile 1の数値が0でないなら、(File 2 - File 1) / File 1の常用対数(Log10)の負値、つまり、File 1の数値に対する、差の割合のオーダーを表示。

Precisionを指定している場合は、常用対数(Log10)の負値がPrecision以上なら、十分に差が小さいとみなし、「S」 (Same)と表示。

もし、少なくとも一方が数値でないなら、

 文字列として比較します。

もし両方の文字列が全く同じなら、何も表示しない。

もし両方の文字列が異なるなら、「D」 (Different)と表示。

常用対数(Log10)の読み方と判定

 例えば、両方の数値の差がFile 1の数字の1%の場合、-Log10 (0.01)=2となります。0.1%なら3となります。すなわち、表示される数値が大きいほど、差が小さいことになります。

 一般的なパソコン上で倍精度浮動小数点数(double)を用いる場合、表示される常用対数(Log10)の負値は、最大でも15程度です。これは、15桁程度の精度であるためです。

 そこで、10〜12程度以上の数値が表示されれば、両方の数値の差はパソコンの誤差が原因と考えられ、ほぼ等しいと判定してよいでしょう。計算内容によっては、5〜6程度でも、工学的にはほぼ等しいと判定できることもあります。


挙動

ファイルの読込み

 比較対照の2つのファイルは、普通のWindows上のプログラムと同様にプルダウンメニューやツールバーで読み込めるほか、ドラッグ・アンド・ドロップや、コマンドラインからも与えることができます。

コマンドライン引数

 このような比較は、バッチ処理したいものです。そこで、いくつかのコマンドライン引数を用意しました。

C:\>numcmp -?

で調べてください。


バグとお願い

 子フォームを横方向または縦方向に並べる命令が、VB6SP5では逆になっているような気がします。numcmpでは、横方向に並べようとしたときに縦方向に、またはその逆に、並び替えられます。

 どなたか、アイコンを作ってください。



アクセスカウンタ
Since 98/12/02

電子メール

このページの最終更新日:10/03/26
ホームページの立ち上げ:98/12/02