• ベストアンサー

エクセル まるめ

(4-1.3*3)/(1.4-1.3) 上式を計算するとO.1/0.1で1になりますが、エクセルでこの式を整数に切り下げると ROUNDDOWN((4-1.3*3)/(1.4-1.3),0) 0になります。小数点以下1桁に切り下げると0.9と表示されます。 ROUNDDOWN((1-0.3*3)/(1.4-1.3),0) ROUNDDOWN((7-2.3*3)/(1.4-1.3),0) はどちらも1になり問題ありません。 以上のように、(1.4-1.3)に問題は無く、(4-1.3*3)に原因があるようなのですが何故なのか分かりません。どなたか教えて下さい。

質問者が選んだベストアンサー

  • ベストアンサー
  • don9don9
  • ベストアンサー率47% (299/624)
回答No.2

演算誤差(丸め誤差)と言われるものです。 Excelは小数の計算をすると、ごく僅かな誤差が発生するんです。 質問のケースでいうと 見かけ上は0.1であっても、Excelの内部的には (4-1.3*3) = 0.0999999999999996 (1.4-1.3) = 0.0999999999999999 で、前者を後者で割った結果は 0.999999999999998 となります。(見かけ上は1ですが) これをROUNDDOWNしているので 0になったり0.9になったりしているわけです。 ちなみに内部的には (1-0.3*3) = 0.1 (7-2.3*3) = 0.100000000000001 となります。 セルの書式設定で小数点以下の表示桁数を 15桁以上に増やしてみると分かるかと思います。 詳しい説明や、回避方法については参考URLをご覧下さい。

参考URL:
http://pc.nikkeibp.co.jp/pc21/special/gosa/index.shtml
sumin2009
質問者

お礼

親切な回答ありがとうございます。 エクセルにまさかこんな誤差があるとは知りませんでした。 奥が深いものですね。

その他の回答 (1)

  • edomin7777
  • ベストアンサー率40% (711/1750)
回答No.1

誤差。 Excelで計算させたときに、小数以下の数字には誤差が出ます。 (Excelに限りません。) 参考までに、URLを掲載します。 http://pc.nikkeibp.co.jp/pc21/special/gosa/eg1.shtml http://pc.nikkeibp.co.jp/pc21/special/gosa/eg2.shtml http://pc.nikkeibp.co.jp/pc21/special/gosa/eg3.shtml http://pc.nikkeibp.co.jp/pc21/special/gosa/eg4.shtml

sumin2009
質問者

お礼

素早い回答ありがとうございます。 設定か何かの問題かと思っていましたが、こんな誤差があるとは驚きました。勉強になりました。

関連するQ&A

  • エクセルの計算について質問です

    エクセルの計算について質問です 数値の計算で、電卓で算出した値とエクセルで計算した値とが異なり困ってます。 【計算内容】 A(整数) × B(小数部2桁) = C(整数) ※Cは小数点以下切捨てとしたい ※エクセル計算ではROUNDDOWNを使用 【実際の計算結果】 (1)10,000,010,000.00 × 9999.99 = エクセル:99,999,999,999,999、電卓:99,999,999,999,999 (2)10,000,010,000.01 × 9999.99 = エクセル:100,000,000,000,000、電卓:99,999,999,999,999.9999 (1)は電卓とエクセルで結果は一致しますが、(2)は一致しません。 エクセルで小数点以下第4位が丸められてるようです。 【エクセルで算出したい値】 (2)ではDに999,999,999,999と出力したいです。 関数INTやROUNDDOWNを使ってみたのですが、うまくいきませんでした。 セルCの書式設定と、どの関数を使用すればよいのか教えていただけると大変助かります。

  • Excelのrounddown関数について

    Excelのrounddown関数について教えてください。 Excel2003でrounddownで0(小数点以下を切り捨て)を入れて計算させた所、例えば、17,600 *0.1=1759となってしまい、1760にはなりません。単純に考えても、電卓で計算しても17,600 *0.1=1760になるはずですが、何故このようになってしまうのでしょうか? 因みに式ですが、=ROUNDDOWN($P4*0.1,0)で、P4(隣のセル)の数値を計算します。 例の場合、P4には3200*5.5の結果が入りますので、ここにも小数点以下の数値は発生しません。 何か設定が違っているのでしょうか?

  • エクセルの計算式で

    10800*0.6*1/7.75*7.75 上記の式の答えは6,479.99999.... となるはずなのですが、エクセルで計算すると6,480になります。 小数点第3位を切り捨てし、第2位までを表示させたいのです(6,479.99) どのような関数等を使ったら良いのか教えて下さい。 ROUNDDOWNを使ってみましたがうまくいきませんでした。 宜しくお願いします。

  • Excelで数値の小数点を揃える方法は?

    Excelの数値データで、小数点以下1桁とか2桁とかの表示にした時、整数の小数点以下を表示しない方法はありますか?しかも、小数点を中心に桁を揃えて。   12.2  300   20.4 こんな感じです。

  • エクセル関数で

    お世話になります。先日こちらで教えていただきました関数で、変更箇所がありましたので悩んでおります、、、 ご存知の方ご指導いただけないでしょうか、、、 ■下記の数値の小数点以下3桁目をある条件で切上げ・切捨てを行いなさい。 【条件】23.230以下は、小数点以下3桁目を切り捨て。23.231以上は 小数点以下3桁目を切上げる。 ただし、小数点以下3桁目が0の場合は値が23.231以上は 小数点以下3桁目を切上げ(*1) 23.230以下の場合は少数点以下2桁目を1減少させる(=0.01マイナス)(*2) 例) 23.151 → 23.15    23.230 → 23.23    23.231 → 23.24 (*1) 23.240 → 23.25 (*2) 23.150 → 23.14 小数点以下3桁目が0の場合、23.230以下の場合小数点以下2桁目を 1減少させるという関数がわかりません。 下記の関数にどのような式を加えればよいのでしょうか? =IF(A1>=23.231,ROUNDUP(A1+0.001,2),ROUNDDOWN(A1,2)) ※上記の式だと、小数点以下3桁目が0の場合、23.231以上の場合は 切上げ、23.230以下の場合は切り捨てになります。 宜しくお願い致します。

  • Excelの桁揃え

    Excelにて小数点まじりの数字や整数の桁数を揃えたいのです。 過去ログから「#,##0.0?」とやってみました。この書式だと、小数点を基準に桁は揃います。しかし整数やゼロが「5.0」「0.0」と表示されます。 整数やゼロは「5」「0」となり、なおかつ桁が他の小数点まじりの数字とそろうということはできないのでしょうか? Excel2000、Windows98です。

  • エクセルの0.1について

    セルA1に「10」を入力します。 次にセルA2に「9.9」を入力します。 そしてセルA3に計算式「=A1-A2」と入力します。 すると、セルA3には「0.1」と表示します。 ここで、セルA3に計算式「=ROUNDDOWN(A1-A2,1)」と入力すると、 セルA3の答えは「0」となります。 Rounddown関数で小数点1位以下を切捨てる前に、セルA3の少数点以下の表示桁数を20桁くらいにすると、「0.099・・・96」となります。 PCは「10-9.9の答えは、0.099・・・96である」と認識しているから小数点1位以下を切捨てると「0」になるのではないかと思います。 セルA3の計算式「=ROUNDDOWN(A1-A2,1)」の答えを「0.1」にする方法はあるのでしょうか。

  • Excel97 演算精度

    Excel97 のセルに値を入れてある計算を行っているのですが、 セルの書式で小数点以下を30桁(MAX)にすると、小数点以下の 桁が14桁までしか表示されません。 15桁~30桁までは0が並びます。 15桁~30桁まで値を表示させるにはどうしたら良いでしょうか?

  • エクセルの桁で質問です

    友達から聞かれて困っています。 エクセルの2000を使っています。 例えば整数「1234」を「1200」 というような表示ってできますか? 無理やり下2桁を0にしたいそうです。 小数点以下の処理ならいっぱい出てるんですが... 誰か教えてください。すみません。

  • エクセル関数で

    お世話になります。下記の数値の小数点以下3桁目をある条件で 切り上げ・切捨てを行いたいのですが、その条件に加えて小数点以下3桁 目が0でも切上げにする場合の数式を教えていただけないでしょうか? 【条件】23.230以下は、小数点以下3桁目を切り捨て。23.231以上は 小数点以下3桁目を切上げる。ただし、23.231以上で切上げる場合、 小数点以下3桁目が0の場合でも切上げる(*) 例)23.151 → 23.15   23.150 → 23.15   23.230 → 23.23   23.231 → 23.24 (*) 23.240 → 23.25 切り上げ、切捨ての数式はIF関数でできたのですが、23.231以上で 切上げる場合、小数点以下3桁目が0の場合でも切上げるというのが 分かりません、、、 =IF(A1>=23.231,ROUNDUP(A1,2),ROUNDDOWN(A1,2)) ご指導いただきたく、宜しくお願い致します。