アプリ版:「スタンプのみでお礼する」機能のリリースについて

(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)に原因があるようなのですが何故なのか分かりません。どなたか教えて下さい。

A 回答 (2件)

誤差。



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

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

お礼日時:2009/12/29 23:32

演算誤差(丸め誤差)と言われるものです。


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 …
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/12/29 23:30

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