dポイントプレゼントキャンペーン実施中!

詳しい人がいましたら教えてください。

ROUNDDONEで計算したエクセルシートをスプレッドシートにあげたところ、
数字が違うことに気づきました。
=ROUNDDOWN((C9-(C9/1.4/0.9))*0.7,0)
C9には67320が入ります。
エクセルでは9723となり、スプレッドシートでは9724となります。
この数字だけがずれており、あとの数字のずれはありません。
なにか互換性の問題なのか、いろいろ調べましたがわからない状態でお手上げです。
よろしくお願いします。

A 回答 (3件)

office 2021では9724になります。

Excelのバージョンは?
試しに
=1/3*3

=(1/3*3)
を入力してみてください。

コンピュータは有限の桁数で計算しているので誤差はあります。スプレッドシートも同じです。
スプレッドシートで
(43.1-43.2)+1
を計算してください。0.9となります。しかし、表示桁数を増やしてください。0.899999999999999となるはずです。Excelもスプレッドシートも有効桁数は15桁です。それ以上桁数を増やしてもゼロが並ぶだけです。

こんどは
1.333+1.225-1.333-1.225
を計算するとExcel 2021では桁数を15桁にしても0ですが、スプレッドシートでは-0.000略22204となってしまいます。最適化の違いから起きます。式を入力するときにはどうすれば誤差が少なくなるか考えて入力しなければなりません。
    • good
    • 1

15桁での計算しかできないからそれ以上の桁が絡む計算で誤差が出るのは


「スプレッドシート形式」の表計算ソフトでは
 (`・ω・´) 仕様です。
マジで。

※ 後発のGoogleスプレッドシートは内部で15桁以上の計算を行ってます。

・・・

そんなわけで、割り算を「一番最後にまとめて行う」か「一度だけにする」ように数式を変えることを勧めます。
No.1の回答者さんはこのうちの「割り算を一度だけ行う」方法をアドバイスしていますね。

これって、表示桁数が少ない電卓でも使う手法です。
覚えておくと良いことがあるかもしれません。

時間を扱う計算でも誤差が生じることがあります。
時間は、12時間を0.5、24時間を1.0とするような浮動小数(小数点以下)のシリアル値なので結構お目にかかることになります。
これも覚えておくと良いことがあるかもしれません。
    • good
    • 1

有効桁数の扱い方の違いだと思います。


下記のようにすれば回避できます。

=ROUNDDOWN((C9-(C9/(1.4*0.9)))*0.7,0)
    • good
    • 1

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