Excelで小数を扱うときの注意

Pocket

Excelで「=8.45-INT(8.45)」を計算すると「0.45」になります。
8.45を切り捨てると8、これを元の数から引くと0.45となります。
これは小数部分だけを取り出す方法です。「=MOD(0.45,1)」とする方法もあります。

しかし表示桁数を増やしてみると「0.449999999999999」になります(Excel2007で確認しました)。
つまりExcelは内部的には「0.45」ではなく「0.449999999999999」で保持していると思われます。有効桁数は15桁だそうです。

通常はこれでも問題ないのですが、切り捨てるときに不具合が生じます。
例えば「=ROUNDDOWN(8.45-INT(8.45)+0.55,0)」は「=ROUNDDOWN(8.45-8+0.55,0)」すなわち「=ROUNDDOWN(1,0)」と同じですから、結果は「1」となるはずですが、実際は「0」となってしまいます。

Excelで計算が合わない場合は、このような小数が原因かもしれません。
対策としては式の途中で適当な桁で丸めてしまう方法が考えられます。
「=ROUNDDOWN(ROUND(8.45-INT(8.45)+0.55,6),0)」
切り捨てる直前で適当な桁数で四捨五入します。
この「適当な桁数」は、最後に切り捨てるときの桁数よりも大きく、15桁より小さければよいと思います。

[ 2012年4月3日 | カテゴリー: Excel | タグ: , ]

« | »

コメントを残す

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

送信してください。


タグ

カテゴリー

最近の投稿

最近のコメント

固定ページ

アーカイブ

stabucky

写真

メタ情報