重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

ROUNDDOWN関数について教えてください。

(1)セルA1に8471.3 , セルA2に 8407.4 という数字を入れて
 セルA3に ROUNDDOWN(A1-A2,1)
 という式を入れました。結果が63.8になります。
 なぜ63.9に答えがならないのでしょうか。

 同じ式で桁を減らしてみて
 A1に1.3 が A2に 0.4 という数字を入れた場合は
 計算結果が0.9 と正しくなります。

 あと少しずつ数字を変えていって試してみたら
 A1に8471.8 , A2に 8407.4 の計算結果が 64.3 と
 なりました。

(2)このROUNDDOWN以外でいい計算式あれば教えてください。

A 回答 (7件)

> =FLOOR(A1-A2,0.1)


> =TRUNC((A1-A2)*10,0)/10
> 勿論、
> =ROUNDDOWN(A1-A2,1)
> いずれも2.5で、2.6にはなりません。
これじゃダメ?
=TRUNC((A1*10-A2*10),0)/10
    • good
    • 0

FloorやTRUNCを使っても小数の誤差を埋めることは出来ませんよ!!


VBAのSingleやDouble程の誤差は出ませんが(何か丸め機能が働いているらしいので)、Excelの数式でも誤差はどうしても出てしまいます。

例 セルA1 34.8
  セルA2 32.2

=FLOOR(A1-A2,0.1)
=TRUNC((A1-A2)*10,0)/10
勿論、
=ROUNDDOWN(A1-A2,1)
いずれも2.5で、2.6にはなりません。

小数の計算は、

有効桁数を決めて計算する方法が考えられますが

=ROUNDDOWN(TEXT((A1-A2),"0.######"),1)

http://oku.edu.mie-u.ac.jp/~okumura/software/exc …

↑誤差について考察しています。






 
    • good
    • 0

=ROUNDDOWN(ROUND(A1-A2,10),1)

    • good
    • 0

こんばんは。



A3:
=A1-A2

=A3=63.9

とすると、FALSE になって、その値は63.9 にはなってはいませんね。

代表的な方法としては、以下のようなものがあると思います。

=VALUE(FIXED(A1-A2,1))
もともと、この演算誤差のために開発された、関数が、FIXED だったような気がします。(プログラミングの本では、こういう方法が良く出てきます)

または、
=(A1*10-A2*10)/10

または、
=ROUND(A1-A2,1)

などとします。他は、非常に小さい値を足して、それを切り捨てするという方法があります。特に、時間の計算などでは、狂いやすいからです。

『日経PC21/エクセル「演算誤差」対策講座』は、昔、丁寧に読んだつもりですが、正直なところ、私には理解できませんでした。記事内容のポイントが外れているような気がします。

マイクロソフトでは、以下で対処法の説明がされています。
http://support.microsoft.com/kb/214118/en-us

日本語訳の中で、

>計算精度を変更する方法の詳細については、種類の ヘルプ メニューで Microsoft Excel ヘルプをクリックします。

change when and how formulas are calculated は、「数式の計算方法を変更する」という意味です。

ただし、ヘルプの
1. [ツール] メニューの [オプション] をクリックし、[計算方法] タブをクリックします。
2. [ブック オプション] の [表示桁数で計算する] チェック ボックスをオンにします。

としても、内部的な計算の精度自体は、修正できないようです。
やはり、出てきたものの処理しか方法はないようです。
    • good
    • 0

これじゃダメかな?


=FLOOR(A1-A2,0.1)
あるいは、
=TRUNC((A1-A2)*10,0)/10
とか。。。
    • good
    • 0

すみません。

正しくはこちらのURLで。

参考URL:http://pc.nikkeibp.co.jp/pc21/special/gosa/index …
    • good
    • 0
この回答へのお礼

ありがとうございます。
きちんと見ることができました。
まだすべて読みきれていませんが、誤差についてとてもくわしく
書かれています。じっくり読んで演算式をどうすればいいか考えたいと思います。
(会社で作った資料の数字も違うことが分かりぞっとしました。)

お礼日時:2008/02/16 18:48

(1) 演算誤差のためです。

演算誤差はURLを参考にしてください。
(2) ROUNDDOWNを使わず、=A1-A2でいいのでは?

参考URL:http://pc.nikkeibp.co.jp/pc21/special/gosa/index …

この回答への補足

早速ご回答ありがとうございます。
たまたまこの時は数字が小数点第一位までしかありませんでしたが、
別の時は小数点第二位まであるので、ROUNDDOWN関数を使いました。参考URL をクリックしたですが ページが見つかりませんでした。

補足日時:2008/02/16 17:55
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!