投稿者 Nightmare  (社会人) 投稿日時 2009/2/23 21:05:38
遅レス失礼します。

>たしか、VBのFormat関数って、四捨五入じゃなくって
>丸め処理をするんじゃなかったかな?

え(汗)そうでしたっけ(汗)
検証を行わずに考えたもので間違ってるかもしれませんね(汗)
ということで検証をしてみた所…

Format(((2.6+4.3)/2),"#.0") → 3.5

と出ました。違う数式も入れてみましたが四捨五入をしている結果がでました。
ですが、かずいさんの

>それで昔、えらい目に会った記憶があったので・・・。

という言葉が気になり調べた所、

・Windows XP と Windows 2000 で Visual Basic 6.0 の
 Format 関数を使用して 四捨五入 を行うと結果が異なる。

という問題があるそうです。
問題が発生した場合は、
丸め処理の対象となる 数値が5の場合 その1桁前の数字が 偶数で
あれば 繰り下げ、奇数であれば 繰り上げられており銀行系の丸め処理
を行い、Round関数と同じ動きをするらしいです。(検証は行っていません)
問題を回避される場合は、fix処理(fix関数+小数点以下の数字)を行うか
もしくは、Service Pack の適用を促す必要があるそうです。
現在は、
※ WindowsXP は Service Pack 1 以降 未適用の場合に発生。
  Service Pack 1以降を適用していれば この現象は発生しません。
らしいです。詳しくは

http://support.microsoft.com/kb/418691/ja
http://www.timetable-info.com/memo/xp2000vb.htm

を参照して下さい。

自身が考えていたよりformat関数は難しいですね(汗)
使用する場合は注意が必要という考えを持ちました。
かずいさんご指摘ありがとうございました。