VB6での「端数処理」の復習

VB6において、丸め関数は”INT”,”FIX”,”ROUND”があります。
このうち、”ROUND”は「最も近い偶数に丸める」という四捨五入であり、一般的なものとは違います(よく嵌るワナ)。
さらに、”INT”と”FIX”はともに「切捨て」です。
“INT”と”FIX”の違いは、負数時に現れます。
INT:負数時には絶対値の大きい側に寄せられる
FIX:負数時には絶対値の小さい側に寄せられる
これらの性質を理解したうえで、自作関数として「四捨五入」や「切り上げ」を作成するのがよいでしょう。
また、型変換関数(CIntとか)や暗黙の型変換は、内部で”Round”しているようです。したがって、期待する四捨五入が得られないことが多いです。
とにかくやってはいけないのは…
・盲目的に型変換/Roundを信じること
・さらに、型変換元/Roundの引数に、強引に”0.0001″なんて加算してみること
ここをしっかり理解しておかないと、いくら精度のよいデータ型を使ったところで無意味になってしまいます。
ちゃんと理解して使いましょう。
(実験結果を載せようと思ったけど、すごい行数になったので止めました…)

VB6での「端数処理」の復習” への1件のコメント

  1. [vb6]Round関数は「四捨五入をする関数」ではありません。

    IEEE 754 ですねー。これを知らないデベロッパも多いと聞きます。VB6において、丸め関数は”INT”,”FIX”,”ROUND”があります。 このうち、”ROUND”は「最も近い偶数に丸める」という四捨五入であり、一般的なものとは違います(よく嵌るワナ)。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Spam Protection by WP-SpamFree