次の方法で共有

Excel2016の計算結果がおかしい

Anonymous
2017-09-08T00:51:56+00:00

A1セルに『258.7』、B1セルに『255.4』を入力してC1セルに『=ROUNDDOWN((A1-B1)*150,0)』を入力したところ、『495』となるはずが『494』が出力されてしまいました。

試行錯誤してみたところ、A1-B1の計算結果が3.29999999999998となっているところまではわかりましたが、なぜそのような結果となるのかがわかりません。いろいろとネットで検索してみたのですが該当する情報を探すことができませんでした。

ちなみにA1『110.1』、B1『106.8』だとC1『495』と正しく計算されました。

経理上の計算時に見つけたのですが、他にもこのような結果になっているかもと思うと怖いため、原因を教えてもらえないでしょうか。

追記

できればリンクは参考程度で、言葉で説明していただければ幸いです。(リンク先の内容が私レベルには難解で理解の及ばない点が多く、また少し私の質問とはピントがぼけていたりするので・・・)

解決方法を提示していただけると一番助かります。

Microsoft 365 と Office | Excel | 家庭向け | Windows

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

9 件の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2017-09-17T14:26:25+00:00

    >C1の式を『=ROUNDDOWN((ROUND(A1-B1,1))*150,0)』にしようと思いますが、これでも誤差が生じることがありますでしょうか?

    今回のケースは「A1-B1」の値が小数点1桁目で丸め誤差のない数字になるために、偶然一致しただけで、その後に掛け算などの演算をしているので、さらに演算誤差が出る可能性があるので、推奨できる方法ではありません。

    すなわち、ROUNDDOWNする計算部分全体を十分な桁数で四捨五入してから小数点以下を切り捨てるような数式にします。

    =ROUNDDOWN(ROUND((A1-B1)*150,10),0)

    どちらかというと、以下のTEXT関数の数式の方が広く使用できます。

    =ROUNDOWN(TEXT((A1-B1)*150,"G/標準")*1,0)

    >また、その他に計算間違いが生じたり不具合があったりすることはありませんか?

    小数点以下の数値を扱い、切り捨てや切り上げ、あるいは大小関係を判定する場合に注意が必要です。

    よくある間違いは、時間(時刻)を引き算で計算した場合や、オートフィルで入力すると、その時間は手入力した時間と違うため、大小関係での判定や時間の切り捨て処理などで間違えた結果を導くことになります。

    例えば、1時間ごとのデータをオートフィルタで作成したいなら、以下のような数式をオートフィルすることになります(例えばA1セルに0:00と入力してB1セルに以下の式を入力して右方向にオートフィル)。1

    =TEXT(A1+"1:00","h:mm")*1

    同様にA1セルからB1セルの時間の差を求めた場合も、単純な引き算ではなく以下のようにしないと手入力デーと同じデータになっていません(鍵かっこは24時間以上の時間の差を計算する場合)。

    =TEXT(A1-B1,""[h]:mm")*1

    この回答は役に立ちましたか?

    3 人がこの回答が役に立ったと思いました。
    0 件のコメント コメントはありません
  2. Hebikuzure aka Murachi Akira 325.9K 評価のポイント MVP ボランティア モデレーター
    2017-09-08T03:37:01+00:00

    この回答は役に立ちましたか?

    2 人がこの回答が役に立ったと思いました。
    0 件のコメント コメントはありません
  3. Anonymous
    2017-09-08T04:51:52+00:00

    ・こちらをご覧ください。

    【 Tips: Excelでの数値表現と計算精度 】

     https://eip.econ.kanagawa-u.ac.jp/eip/excel-calc-error.html

    【 エクセルの計算が合わない? エクセルに強い人程要注意。付録:PHPトリック 】

     http://lscharlie.exblog.jp/25339347/

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  4. Anonymous
    2017-09-08T04:45:48+00:00

    回答ありがとうございます。

    Excelでは計算を二進数で行うため、計算過程で循環二進数の丸め誤差により計算結果に小さな誤差が生じることがあるという認識でよろしいでしょうか?

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  5. Hebikuzure aka Murachi Akira 325.9K 評価のポイント MVP ボランティア モデレーター
    2017-09-08T03:39:17+00:00

    ちなみの紹介したページからリンクされている「浮動小数点数の演算における丸め誤差を修正する方法」は日本語版が無くなって英語版だけになってます

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません