• ベストアンサー

Excelでの小数点の計算

小数点以下の部分で計算が上手くいかず困っています。 Excelのバージョンは2007です。 そして、各セルの内容は次の通りです。 A1:8347 B1:4.04 C1:8.66 D1:B1+C1 E1:D1-(3.5+8.3) F1:ROUNDDOWN(A1*E1,1) F1のセルの答えは小数点第2位で切り捨てしなければなりません。 そうすると、答え変わってしまい、正しい結果になってくれません。 この場合の対処法があれば教えてください。

noname#106752
noname#106752

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

  • ベストアンサー
回答No.3

ポイントはE1の=D1-(3.5+8.3)ですね。D1が12.7なので11.8を引いて 0.9になって欲しいところですが、いわゆる「丸め誤差」によって 0.89999999999999900000 になります。そうすると8347をかけた時も 5712.3にならず7512.29999999999000000000 になり、切り捨てると 0.1足りないってことになるわけです。 解決策ですが、E1のところで=(D1*10-(3.5+8.3)*10)/10 のような姑 息な手で丸め誤差を回避するか、最期の切り捨ての直前にチョット 下の桁で四捨五入して=rounddown(round(A1*E1,2),1) とするか、で すね。私は後者かな。

noname#106752
質問者

お礼

回答、ありがとうございます。 後者の方はすっきりしていて、良いですね!! 後者の方を使用させてもらいます。

その他の回答 (3)

  • chie65536
  • ベストアンサー率41% (2512/6032)
回答No.4

確かに「A1*E1」を表示させると「7512.3」ですし、それをROUNDDOWN関数で切り捨てすると「7512.2」になりますね。 期待する結果「7512.3」と「A1*E1」の差を計算してみましょう。 F2 :=7512.3-A1*E1 F2には「1.18234E-11」と表示されます。 実は「A1*E1の値」は「7512.3より、0.0000000000118234....だけ小さい」のです。つまり、計算誤差で「7512.29999999999881765...」になっています。 「7512.29999999999881765...」を「小数点第2位で切り捨て」すれば、当たり前のように「7512.2」になります。 誤差を吸収する場合は =ROUNDDOWN(VALUE(TEXT(A1*E1,"#.##")),1) と言うように「計算結果をTEXT関数で文字列に変換して、それをVALUE関数で数値に戻してから、小数点2位以下の切り捨て」をしましょう。

noname#106752
質問者

お礼

回答、ありがとうございます。 一度、テキストに変換してから、数値に戻す方法。 思いつきもしませんでした(-_-;) 大変、勉強になりました。

  • garaogu
  • ベストアンサー率40% (67/166)
回答No.2

こんにちは 下記のように固定数値をすべて10倍し、F1で100分の1にするのでは如何でしょうか? A1:83470 B1:40.4 C1:86.6 D1:B1+C1 E1:D1-(35+83) F1:ROUNDDOWN(A2*E2/100,1)

noname#106752
質問者

お礼

回答、ありがとうございます。 もともとの値は他の部分でも使用していて、そういう変更は加えられないんです。 他の部分を10分の1で表示させれば良いだけかもしれませんが…。

  • FEX2053
  • ベストアンサー率37% (7987/21355)
回答No.1

追試しても「この値では」正しい結果になるんですけどね。 だとすると、理由は2つのどちらか。 1.そもそも「正しい」と思っている計算と、Excelでやってる計算が違う。  計算順序の違いとか、式の立て方、単なる入力ミスとか、その手のミスが  原因で数値が狂うことは、式が複雑になると結構ある。 2.Excelの小数点以下の計算誤差。詳細はこちらを http://pc.nikkeibp.co.jp/pc21/special/gosa/    掛け合わせる数値の絶対値の差が大きいと、結構大きな誤差になります。

noname#106752
質問者

お礼

一番早い回答、ありがとうございます。 小数点の誤差、プログラムを勉強していた時の事を思い出しました。

関連するQ&A

  • Excelの小数点以下

    詳しい方お願い致します。 Excelの小数点以下の計算結果を、全て切捨てにする方法ありますでしょうか? セルの計算式はその都度変るのですが、その結果の小数点以下は、ずべてきり捨てたいのです。 関数、ROUNDDOWNを使うと小数点以下切捨てになるのは分るんですが、 毎回関数使うのは面倒ですし、時々忘れて、1円多くなってしまいます。 開いたファイル全てで、切捨てで計算してほしいのです。 こんな方法ありますでしょうか?

  • 小数点切捨て

    =ROUNDDOWN(AI5,-3)*0.109/5の関数があるのですが、小数点以下を切捨てにしたいので教えてください。 AI5のセルには896,958の数字がありこれで計算すると19,533になってしまいますので、19,532にしたいので、よろしくお願いいたします。

  • Excel 小数点以下の切捨て方法

    初歩的な質問で申し訳ありません。   A   B     C 1 9.5  2875  =A1*B1 という式で、C1の計算後の値を小数点以下切捨てにしたいのですが、どうすればいいのか教えてください。 今のままでは四捨五入になっています。 Excelの本で調べてROUNDDOWNを使うのかなとは思ったのですが 既にC1には計算式が入っているからか、上手くできません。 やり方はありますでしょうか?教えて下さい。

  • 小数点4桁での四捨五入がうまくいきません

    エクセルで次のような計算をさせます。 A2 に1.8、B2に0.075、C2に0.075、 D2に= A2*B2*C2 、E2に=roundup(D2,4) D2の計算結果は 0.010125 です。小数点第5桁目の値を参照して第4桁目で四捨五入したいのですが、roundupでは0.0102、rounddownでは0.0101です。 表示させたいのは0.0101です。この場合、rounddownを使えば問題ないのですが、逆にrounddownだと小数点以下4桁目の四捨五入がうまくいかない場合もあります。 例えば A3に2.7 B3に0.08、C3に0.08 があり、E3にすべての値を掛けた結果を表示させると0.01728となります。 =roundup(E3,4)では0.0173となり、rounddownでは0.0172となります。この場合はroundup関数の結果である0.0173が求める数値です。 A列、B列,C列に任意の数字が入り、E列に4桁目で四捨五入した正確な値を求めたいのですが、なにか良い方法はないでしょうか。 VBAを使っても構いません。ちなみにこれは木材の材積計算に使用する目的です。 よろしくお願いします。

  • エクセル2010小数点計算#3

    先日質問に対する答えをいただきました。 http://okwave.jp/qa/q7568065.html セルA1「1.09」B1「2.00」C1「1.09」D1「2.03」E1「2.03」F1「2.00」の平均が 「2.12」になってしまいます。「2.00」にする為にはどうしたら良いですか? お願いします。

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

    エクセルの計算について質問です 数値の計算で、電卓で算出した値とエクセルで計算した値とが異なり困ってます。 【計算内容】 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の書式設定と、どの関数を使用すればよいのか教えていただけると大変助かります。

  • エクセルで小数点以下切捨て

    エクセルで小数点以下切り捨ての関数を教えて下さい。 自分でやってみたのですが、どうしても出来ません。 例えば、(38÷5.8)×145は949.99999になりますが、 上記の計算をE9でしてE8に=ROUNDDOWN(E9,0)と入力しておくと 950で表示されてしまいます。 =TRUNC(E9,0)でも同じです。 どのように入力すれば949で表示されますか? 宜しくお願いします。

  • エクセルの計算式で・・

    エクセルの計算式を=1.01*(A1)とし、1行のセルはこの計算式で求められているのですが、この計算結果の値を、小数点以下四捨五入するには、どのような数式にすると良いのでしょうか? 例)A1 500 B1 505 C1 510.05 D1 515.15 E1 520.30 F1 525.50 ...

  • 小数点の計算をはずしたいです

             1       2        3        4 A              3000       700      4(4.28) B      12000(12840) A2÷A3の答えが、実際は(4.28)なのですが、表示上は小数点を入れず 4にしています。 B1に、A2×A4の答えを載せたいのですが どうしても小数点も含めて計算してしまいます。 単純に3000×4の答えをB1に入るようにしたいのですが どなたかお教え願えませんでしょうか? 宜しくお願いします。

  • Excel 小数点以下を切り捨てた値を集計する方法

    エクセル2010を使っている者です。 小数点以下を切り捨てた状態で集計する方法についてお教えください。 A1 3 B1 9 C1 A2 =rounddown(A1*0.8) B2 =rounddown(B1*0.8) C2 =sum(A2:B2) と値、計算式を入れた場合、C2の値が、2+7で9になってほしいところが、10になってしまいます。 A2とB2が表示上は、それぞれ2、7となっているのですが、計算の時は2.4、7.2で計算されているからだと思います。 小数点以下を切り捨てた状態で集計するにはどうすれば良いでしょうか? よろしくお願いいたします。

専門家に質問してみよう