非効率も効率

筆者のパソコン関連や効率化についての考察と雑談

Excelで切り捨てはINTを使おう

久しぶりにExcel丸め誤差に苦しみました。
バージョンはExcel 365 バージョン 2206 32bitです(客先が32bitなもので)

 

ちょっとややこしい計算式を設定するVBAを開発したのですが、
ユーザーからエラーメッセージが表示されると連絡があり、
対象のExcelファイルを参照すると、とあるセルに"-2E-15"というありえない数値が。

 

"数式の検証"機能で1ステップづつ計算していくと・・・

 

初期状態。"数式の検証"が無かったら計算式のセルを小分けしているところです。


途中を省略。ROUNDDOWNで15の少数部を切り捨てて15です。


15-15=0ですよね・・・


!? 

 

といった感じでした。

 

"ROUNDDOWN"を"INT"に変更したら想定通りに動作。

"ROUNDDOWN"は桁数0で切り捨てても内部では浮動小数扱いなんですね。
"INT"はしっかり内部も整数で扱うみたいです。