ROUNDDOWN 関数の結果が Excel (2000以降)と異なる場合がある

文書番号 : 21437     文書種別 : 使用方法     最終更新日 : 2006/05/30
文書を印刷する
対象製品
El Tabelle Sheet 4.0J
詳細
数式機能において、小数点以下の値を含む計算を ROUNDDOWN 関数で実行すると、ROUNDDOWN 関数の結果が Excel (2000以降)と異なる場合があります。

具体的には

=ROUNDDOWN(800*40.8,0)

の結果が El Tabelle Sheet 4.0J では 32639 ですが、Excel (2000以降)では 32640 です。
この現象は ROUNDDOWN 関数内で Double 型のデータで計算を行っていることによるもので、Double 型が小数点以下のデータを厳密に扱えない仕様に起因します。これは Excel 95/97 でも同様に確認できます。
El Tabelle Sheet 4.0J と Excel で結果が異なるのは、Excel 2000 以降に ROUNDDOWN 関数に補正処理が組み込まれたためです。El Tabelle Sheet 4.0J では関数内の処理を Decimal 型で行うことにより、Excel と同じ結果を得ることができます。

製品に付属のサンプル(製品インストールフォルダ¥Samples¥Functions 内)に、この処理を使用したサンプルプロジェクト「Rounddown」が含まれています。
キーワード
問題

この文書は、以前は次のFAQ IDで公開されていました : 8930