Visual Basic 中学校 掲示板 投稿の管理
タグのない投稿を抽出
統計
RSS
Visual Basic 中学校
投稿一覧
少数の四捨五入の方法を教えてください
この投稿へのリンク
https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=8975#CommentId10825
この投稿の削除
削除パスワード
削除する
コメント本文
投稿者
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関数は難しいですね(汗)
使用する場合は注意が必要という考えを持ちました。
かずいさんご指摘ありがとうございました。