tk-engineering.com Technical blog

To explore strange new systems.
To seek out new bugs and new coding horrors.
To boldly go where no man has not wanted to go before.
VB6での「端数処理」の復習
VB6において、丸め関数は"INT","FIX","ROUND"があります。
このうち、"ROUND"は「最も近い偶数に丸める」という四捨五入であり、一般的なものとは違います(よく嵌るワナ)。

さらに、"INT"と"FIX"はともに「切捨て」です。
"INT"と"FIX"の違いは、負数時に現れます。
INT:負数時には絶対値の大きい側に寄せられる
FIX:負数時には絶対値の小さい側に寄せられる

これらの性質を理解したうえで、自作関数として「四捨五入」や「切り上げ」を作成するのがよいでしょう。

また、型変換関数(CIntとか)や暗黙の型変換は、内部で"Round"しているようです。したがって、期待する四捨五入が得られないことが多いです。

とにかくやってはいけないのは…
・盲目的に型変換/Roundを信じること
・さらに、型変換元/Roundの引数に、強引に"0.0001"なんて加算してみること

ここをしっかり理解しておかないと、いくら精度のよいデータ型を使ったところで無意味になってしまいます。

ちゃんと理解して使いましょう。
(実験結果を載せようと思ったけど、すごい行数になったので止めました…)
| tkinugaw | VB6 | 21:24 | comments(0) | trackbacks(1) |









http://blog.tk-engineering.com/trackback/375830
[vb6]Round関数は「四捨五入をする関数」ではありません。
IEEE 754 ですねー。これを知らないデベロッパも多いと聞きます。VB6において、丸め関数は”INT”,”FIX”,”ROUND”があります。 このうち、”ROUND”は「最も近い偶数に丸める」という四捨五入であり、一般的なものとは違います(よく嵌るワナ)。
| aspxの日記(ASP++ブログ) by Moo | 2006/01/20 3:06 PM |
   1234
567891011
12131415161718
19202122232425
2627282930  
<< September 2010 >>
# RECOMMEND
# RECOMMEND
ピープルウエア 第2版 − ヤル気こそプロジェクト成功の鍵
ピープルウエア 第2版 − ヤル気こそプロジェクト成功の鍵
トム・デマルコ, ティモシー・リスター, 松原 友夫, 山浦 恒央
# RECOMMEND
コンサルタントの秘密―技術アドバイスの人間学
コンサルタントの秘密―技術アドバイスの人間学
G.M.ワインバーグ,木村 泉,ジェラルド・M・ワインバーグ
# RECOMMEND
プログラミングの心理学―または、ハイテクノロジーの人間学
プログラミングの心理学―または、ハイテクノロジーの人間学
ジェラルド・M.ワインバーグ, 木村 泉, 角田 博保, 久野 靖, 白浜 律雄
# RECOMMEND
ソフトウェア開発のダイナミズム
ソフトウェア開発のダイナミズム
ジム マッカーシー, Jim McCarthy, 三浦 明美, 福崎 俊博
# RECOMMEND
熊とワルツを - リスクを愉しむプロジェクト管理
熊とワルツを - リスクを愉しむプロジェクト管理
トム・デマルコ, ティモシー・リスター, 伊豆原 弓
# RECOMMEND
人月の神話―狼人間を撃つ銀の弾はない
人月の神話―狼人間を撃つ銀の弾はない
Jr.,フレデリック・P. ブルックス, Frederick Phillips,Jr. Brooks, 滝沢 徹, 富沢 昇, 牧野 祐子
# RECOMMEND
Code Complete第2版〈上〉―完全なプログラミングを目指して
Code Complete第2版〈上〉―完全なプログラミングを目指して
スティーブ マコネル, Steve McConnell, クイープ
# RECOMMEND
Code Complete第2版〈下〉―完全なプログラミングを目指して
Code Complete第2版〈下〉―完全なプログラミングを目指して
スティーブ マコネル, Steve McConnell, クイープ
# RECOMMEND
デッドライン―ソフト開発を成功に導く101の法則
デッドライン―ソフト開発を成功に導く101の法則
トム デマルコ, Tom DeMarco, 伊豆原 弓
# RECOMMEND
新訳 ソフトウェアプロジェクトサバイバルガイド
新訳 ソフトウェアプロジェクトサバイバルガイド
スティーブ マコネル, Steve McConnell, アルテアジャパン, 久手堅 憲之
# RECOMMEND
ソフトウエア開発 55の真実と10のウソ
ソフトウエア開発 55の真実と10のウソ
ロバート・L・グラス, 山浦 恒央
# RECOMMEND
ソフトウェア開発201の鉄則
ソフトウェア開発201の鉄則
アラン・M. デービス, Alan M. Davis, 松原 友夫
# RECOMMEND
リファクタリング―プログラムの体質改善テクニック
リファクタリング―プログラムの体質改善テクニック
マーチン ファウラー, Martin Fowler, 児玉 公信, 平澤 章, 友野 晶夫, 梅沢 真史
# RECOMMEND
Joel on Software
Joel on Software
Joel Spolsky, 青木 靖
# RECOMMEND
デスマーチ 第2版 ソフトウエア開発プロジェクトはなぜ混乱するのか
デスマーチ 第2版 ソフトウエア開発プロジェクトはなぜ混乱するのか
エドワード・ヨードン, 松原 友夫, 山浦 恒央
# RECOMMEND
# RECOMMEND
# RECOMMEND
# RECOMMEND
プログラミングMicrosoft ADO.NET
プログラミングMicrosoft ADO.NET
David Sceppa, 日本ユニテック
# RECOMMEND
# RECOMMEND
デスマーチ 第2版 ソフトウエア開発プロジェクトはなぜ混乱するのか
デスマーチ 第2版 ソフトウエア開発プロジェクトはなぜ混乱するのか
エドワード・ヨードン, 松原 友夫, 山浦 恒央
# RECOMMEND
ライト、ついてますか―問題発見の人間学
ライト、ついてますか―問題発見の人間学
ドナルド・C・ゴース, G.M.ワインバーグ, 木村 泉
# RECOMMEND
コンサルタントの道具箱
コンサルタントの道具箱
ジェラルド・M・ワインバーグ, 伊豆原 弓
' RECENT COMMENTS
# RECENT TRACKBACK
# CATEGORIES
# ARCHIVES
-> LINKS
# COUNTERS
カウンタ設置以来…
今日…
昨日は…


Stats [since 09/09/06]
- PROFILE