• ベストアンサー
  • 困ってます

エクセルの四捨五入

エクセルについて質問させて下さい。 エクセルで下記式を入力したところ、返された答えが「3」となりました。 「3.5」の小数点第1位を四捨五入なので「4」となるべきところなのにです。 理由が分かる方いましたら是非教えて下さい。 =ROUND((1.035-1)*100,0)

共感・応援の気持ちを伝えよう!

質問者が選んだベストアンサー

  • ベストアンサー
  • 回答No.3
  • M_Sato
  • ベストアンサー率55% (547/994)

エクセルの内部で十進法で処理していないために生じる誤差だと思います(No.1の方のいう「量子化誤差」がそれかもしれません)。 どのくらいの誤差が生じているかというと、数式を次のようにしてみればわかります。これだと4になります。 =ROUND((1.035-1)*100+0.000000000000004,0) 小数点以下ゼロ14個と4です。末尾を3にすると切り捨てられて3になります。 こうした誤差が生じる可能性がある場合には、以下のいずれかの方法でにげるしかないかもしれません。 1)四捨五入する前に限りなく小さい数字を加えておく =ROUND((1.035-1)*100+0.00001,0) 2)まず1000倍し四捨五入して整数化(ここでは35)した上で10で割って四捨五入する =ROUND(ROUND((1.035-1)*1000,0)/10,0)

共感・感謝の気持ちを伝えよう!

質問者からのお礼

大変丁寧な説明&解決方法のご教示ありがとうございました!大変助かりました。

その他の回答 (2)

  • 回答No.2
  • kon555
  • ベストアンサー率52% (1138/2149)

 エクセルに限らず、プログラムというモノは小数点以下の計算で微小なズレが起きやすいのです。  理由については以下の記事などが参考になるかと。 https://www.google.co.jp/amp/s/blog.apar.jp/program/8900/%3famp=1  おそらく貴方の環境でも、実際には3.499999・・・といったように計算結果に微小ズレが生じ、四捨五入で大きくズレたのだと思われます。

共感・感謝の気持ちを伝えよう!

  • 回答No.1
  • aokii
  • ベストアンサー率23% (4793/20235)

量子化誤差というものなのかも知れません。

共感・感謝の気持ちを伝えよう!

関連するQ&A

  • Excelの関数、四捨五入について

    ご質問があります。 現在Excelで表を作っているのですが、どうしても四捨五入で躓きます。 例) A 1234.56 →四捨五入(ROUND.1) →B 1235 上記のようになるのですが 例) B 1235×0.9 → 1111.1(小数点第一表示) 上記のようになってしまいます。 四捨五入したBのセルに対し0.9をかけているはずなのに 四捨五入を行う前のAに0.9をかけた答えが出てしまうのです。 これの謎が解けず困っています。 どなたかお分かりの方がいましたら宜しくお願い致します。

  • エクセルの四捨五入で

    エクセルでセルに[=5/2]と入力すると2.5となります。 小数点以下の桁数を0にすると四捨五入されて3になります。 このセルを2つ作ると「3」が2つ表示されますがドラッグして右下に合計を表示させると「5」と表示されます。 このときに四捨五入された後の合計すなわち「6」と表示させることはできないでしょうか。

  • 四捨五入について

    "1.005"を小数点第三位で四捨五入して、"1.01"にしたいのですが、 "Math.round(1.005*100)/100"だと1.005*100が100.4999999999998になってしまい、結果的に"1.00"が返されてしまいます。何か良い解決方法はないでしょうか?

  • 小数第1位を四捨五入

    ちょっと混乱してしまったので質問させてください。 エクセルの関数の練習問題集をやってまして、その中で 「小数第1位を四捨五入する」 「小数第1位を切り上げる」 という表現が出てくるのですが、これの答えは小数第1位までの数字になりますか? それとも、小数点なしの数字になりますか? たとえば1.562という数字ならば、上記の四捨五入の場合答えは2になりますか? それとも1.6でしょうか? 学校で数学を習ったのがかなり昔なので、表現がわからなくなりました(^_^;)

  • 四捨五入でどこから切り上げるか質問です

    四捨五入で質問です 下記の様な数字の場合 ≒1.444444445 小数点第二位までの四捨五入の場合、 1.45 だと思うのです それとも、小数点第三位のみから考え、 1.44 となりますか? 年の瀬皆様お忙しいところ大変恐縮です 何卒よろしくお願いいたします

  • 小数点の四捨五入で分からないことがあります

    例えば、0.230978という値を小数点第4位を四捨五入したら、答えは0.231ですか?それとも0.2310が答えですか? また、0.8という値を小数点第1位を四捨五入したら、答えは1.0ですか?それとも1ですか? よろしくお願いします。

  • エクセルで小数点第二位を四捨五入せず・・・

    エクセルで小数点第二位を四捨五入せずに、小数点第一位まで表示さるにはどうすればよいでしょうか。 207004×12%-24840=0.48 なんですが、0.4まで表示したいのです。 でも第一位までしか表示しないと、第二位が四捨五入されて、0.5になってしまうんですよね。 簡単な方法を教えてください。

  • エクセル 四捨五入??

    エクセルで計算しセルの書式設定で小数点3位までにしたばあい4位のは四捨五入されて繰り上がってしまうのでしょうか?

  • 四捨五入について質問

    四捨五入とは、TOMACの用語集で『必要な位の1つ下の位の数が4,3,2,1,0のときは切り捨て、5,6,7,8,9のときは切り上げること』と書かれていました。 そのTOMACの用語集で下記の実例も一緒に掲載されていました。 --実例引用-- 四捨五入によって小数第1位までの概数を求める 25.38→25.4 301.049→301.0 --実例引用終了-- 質問:TOMAC用語集の解説で『必要な位』とありましたが、これは"求める位"を指すのでしょうか? 例えば上記の実例引用の『小数第一位までの概数を求める』であれば、 小数第一位までの数25.4や301.0がTOMACの用語集に記載された『必要な位(求める位)』ですよね? 質問2:『四捨五入によって237934を千の位までの概数にしましょう』という問題文の場合、答えは『238000』ですよね? 質問3:『小数点以下第2位を四捨五入する』とは『小数第2位を四捨五入をして5以上であればその1つ上の位である小数第1位に1を加え、4以下であれば切り捨てる』ってことですよね?

  • C++の四捨五入

    プログラミングで言う四捨五入とはいったいなんなのでしょうか? 丸めと四捨五入が混同していてよくわからなくなってます C++でこれは四捨五入ですか? cout << fixed << setprecision(1) << num/7.0 << endl; いままで、とはいっても初心者ですが四捨五入の時は以下のようにしていました。 cout << round((num/7.0)*10)/10 << endl; 小数点第2位を四捨五入しなさいと言われた時はどちらも同じですか?