- ベストアンサー
Excelの関数(切捨て)の使い方
- ExcelのROUNDDOWN関数を使って、0.0から9.9までの数値を小数第1位で切捨てる方法について説明します。
- 直値で入力する場合は正しく切捨てられますが、0.0から0.1刻みで加算する算式で入力すると、一部の切捨て結果がおかしくなることがあります。
- Excelの関数の使い方に問題がある可能性があります。関数の引数や設定を再確認し、正しく切捨てられるように調整してください。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
「浮動小数点誤差」と言って、小数点以下の数字を含む数を足したり引いたり計算すると、必ずどこかで出てくる計算間違いです。 セルの書式設定の表示形式のユーザー定義で 0.00000000000000 を設定してみると、6.0に見える数字が間違っている(結果して、その下の数字が全部間違えている)事を確認できます。 回避策1: 「小数点以下の数字を足したり引いたり」しない数式に変更します。 たとえばA2を =(A1*10+1)/10 とします 回避策2: A2を =ROUND(A1+0.1,1) のように、毎回必ず丸めます 回避策3: A2を =$A$1+ROW(A1)/10 とします 回避策4: エクセルのオプションで、「表示桁数で計算する」のチェックを入れます
その他の回答 (3)
- etu3
- ベストアンサー率9% (1/11)
=ROUNDDOWN(A1,0)を『=ROUNDDOWN(A1,1)』にしたら、 出来ましたけど。 『0』を『1』にして下さい。
お礼
回答ありがとうございました。しかし、引数を変えると、切捨てする桁の位置が変わるので、駄目だと思います。問題はA列の数値が見た目とは違って来ることとわかりました。例えば、6.0と表示される数値が実は5.999999---になっていました。
- tom04
- ベストアンサー率49% (2537/5117)
こんんちは! PCは2進数で物事が進んでいますので、小数点以下の数値がある場合は 「浮動小数」といってそのような問題が生じてきます。 特に時間計算等の場合には注意が必要です。 仮に0.1ずつプラスした場合 10進数では6.0でも2進数で表現する場合は 5.999・・・・ となったりします。 そこでどうしてもお望みのような表示にしたい場合は =ROUNDDOWN(ROUND(A1,5),0) のように切り捨てする数値を、ある桁数にまるめたものを切り捨てる! といった数式にすれば大丈夫だと思います。 この程度で参考になりますかね?m(_ _)m
お礼
ありがとうございました。通常は、浮動小数であるための誤差が生じることに気がつかずに使うので、思わぬ落とし穴ですね。勉強になりました。
- suzukikun
- ベストアンサー率28% (372/1325)
コンピュータの計算は二進法でやっているので0.1を10回加算し続けていても1になるとは限りません。 なので計算結果をセルに出すようにして確認してみることをお勧めします。 どうしてもやりたいのであれば整数演算になるようにして、そのあと求める小数にするというのが取りあえずの対処法です。
お礼
ありがとうございました。参考にさせて頂きます。
お礼
ありがとうございました。しかも複数の回避策を教えて頂き、勉強になりました。