小数点4桁での四捨五入がうまくいかない問題について

このQ&Aのポイント
  • エクセルでの小数点4桁での四捨五入がうまくいかない問題について質問があります。具体的には、特定の計算式の結果を四捨五入したいが、roundupやrounddownでは正確な結果が得られない場合があるとのことです。
  • 現在、木材の材積計算に使用するために、A列、B列、C列に任意の数字が入力され、それらを掛け合わせた結果を四捨五入したいと考えています。しかし、roundupやrounddownを使用しても正確な四捨五入ができません。
  • 質問者は、小数点第5桁目の値を参照して第4桁目で四捨五入したいとしています。ただし、roundupでは四捨五入が上手くいかず、rounddownでは小数点第4桁目の値が正確に四捨五入されない場合があるとのことです。良い方法やVBAの使用が可能な方法を求めています。
回答を見る
  • ベストアンサー

小数点4桁での四捨五入がうまくいきません

エクセルで次のような計算をさせます。 A2 に1.8、B2に0.075、C2に0.075、 D2に= A2*B2*C2 、E2に=roundup(D2,4) D2の計算結果は 0.010125 です。小数点第5桁目の値を参照して第4桁目で四捨五入したいのですが、roundupでは0.0102、rounddownでは0.0101です。 表示させたいのは0.0101です。この場合、rounddownを使えば問題ないのですが、逆にrounddownだと小数点以下4桁目の四捨五入がうまくいかない場合もあります。 例えば A3に2.7 B3に0.08、C3に0.08 があり、E3にすべての値を掛けた結果を表示させると0.01728となります。 =roundup(E3,4)では0.0173となり、rounddownでは0.0172となります。この場合はroundup関数の結果である0.0173が求める数値です。 A列、B列,C列に任意の数字が入り、E列に4桁目で四捨五入した正確な値を求めたいのですが、なにか良い方法はないでしょうか。 VBAを使っても構いません。ちなみにこれは木材の材積計算に使用する目的です。 よろしくお願いします。

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

  • ベストアンサー
  • KEIS050162
  • ベストアンサー率47% (890/1879)
回答No.3

roundup() 切り上げ rounddown() 切り捨て round() 四捨五入 です。なので、四捨五入の値を使いたい場合は、round()を使ってください。 疑問に思った時は、まずは関数のHelpをみてみると良いですよ。 https://support.office.com/ja-jp/article/round-%E9%96%A2%E6%95%B0-c018c5d8-40fb-4053-90b1-b3e7f61a213c

shibushijuko
質問者

お礼

ご回答ありがとうございます。roundupとrounddownしか頭になく、それ以外の関数を考えることすらしませんでした。 roundで思う通りの結果になりました。ありがとございました。m(_ _)m

その他の回答 (2)

  • amanojack
  • ベストアンサー率45% (116/256)
回答No.2

コンピュータは、2進法で計算していますが、10進法の0.1は、無限小数となり 値が、期待通りに表示されないこともあります。 その場合、必要な桁数を決めてROUND関数で処理するしかないのでは? エクセル 関数 エラーで、検索してみるとわりといろいろなケース出てきます。参考までに計算精度のURL貼っておきます。

参考URL:
https://eip.econ.kanagawa-u.ac.jp/eip/excel-calc-error.html
shibushijuko
質問者

お礼

ご回答ありがとうございます。round関数で問題解決しました。 ありがとうございました。m(_ _)m

  • kana1104
  • ベストアンサー率23% (174/727)
回答No.1

ただのroundでは?

shibushijuko
質問者

お礼

ご回答ありがとうございます。round関数で問題解決しました。 ありがとうございました。m(_ _)m

関連するQ&A

  • エクセルで小数点以下3桁を四捨五入して、小数点以下1桁を表示する方法

    エクセル2003を使用しています。 計算式から出た結果に対して、小数点以下3桁を四捨五入して、小数点以下2桁ではなく、1桁を表示したいです。 例えば、計算式の結果、 1.145 の場合、普通に四捨五入すると 小数点以下1桁なら、1.1 小数点以下2桁なら、1.15 となってしまいます。 これを小数点以下3桁を四捨五入して、小数点以下1桁表示の1.2と表示させたいのですが、可能でしょうか?

  • 小数点以下「3桁で」四捨五入?「3桁を」四捨五入?

    小数点第3位を四捨五入して、小数点第2位までの数値にすることを、 「小数点以下3桁で四捨五入する」というのは正しい日本語ですか? 「小数点以下3桁を四捨五入する」の方が正しいですか? それとも他にもっと適切な言い方はありますか? 国語に自信のある方、回答お願いします!

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

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

  • 小数の四捨五入

    お世話になります。 タイトルのとおりなのですが、ただ0.2332232…みたいな小数ではなく、 DBから取得した小数で、 2.46674e+007 のような感じで後ろに+~という文字がついてしまっている小数の四捨五入の仕方です。 これをroundで四捨五入すると、0になってしまいます。 // $float_numが2.46674e+007だとして // 小数第3位まで取得 $float_num = round($float_num,3); 出力結果:24667400 2.467という値を取得したいです。 どうかご教授いただけないでしょうか。

    • ベストアンサー
    • PHP
  • 四捨五入のことで教えてください

    教えてください。 Sheet1 に価格表があります。商品コード=A列 商品名=B列 単価=C列に記載してあります。単価の見直しを行う際、四捨五入をします。条件があり、単価の二桁は一桁で四捨五入、三桁は二桁で、四桁は三桁、五桁は四桁、・・・・とします。ただし、四捨五入の桁はまだ未確定ですが、決まり次第実行します。関数やマクロで行うことはできますか?

  • Access2000 小数第3位で四捨五入

    質問させていただきます。 Access2000で以下の計算式を作りました。 金額 = Round(重量 × 単価,2) これは「金額」を小数第3位で四捨五入します。 ところが以下の数値の場合、正しく計算してくれません。 764.00 = 0.479 × 1595 本当は 764.005 だから 小数第3位で四捨五入すると 764.01 になると思うのですが・・・。 ちなみに以下の値では・・・ 754.44 = 0.473 × 1595 (754.435だから小数第3位で正しく四捨五入されています)。 やり方が悪いのでしょうか?それとも他に正しく計算できる方法があるのでしょうか?

  • 小数点第2位を四捨五入し…って?

    Excelの表の作成の問題なのですが、頭がこんがらがってきたので質問させてください^^; 「小数点第2位を四捨五入し、小数点以下の桁数が1桁の%表示にすること」…とは、 98.12%を 98.1% ↑のように小数第1位まで表せということですか?

  • 四捨五入について

    技術評論社より出版の、「C言語による最新アルゴリズム事典」(奥村晴彦著)の「四捨五入」の項目について質問です。 「a >= 0, b > 0の2整数について、a / bを四捨五入で小数第一位までに丸める方法」が以下のように書かれています。 整数型変数rを使って、 r = (10 * a + b / 2) / b; printf("a / b = %d.%d\n", r / 10, r % 10); rには、結果の小数a.bが10 * a + bの形に入ることになるのでしょうが、何故そうなるのかわかりません。 どうかご教授ください。m(__)m

  • 小数点第2位を四捨五入し…って?

    Excelの表の作成の問題なのですが、頭がこんがらがってきたので質問させてください^^; 「小数点第2位を四捨五入し、小数点以下の桁数が1桁の%表示にすること」…とは、 98.12%を 98.1% ↑のように小数第1位まで表せということですか?

  • Excel 小数点以下の切捨て方法

    初歩的な質問で申し訳ありません。   A   B     C 1 9.5  2875  =A1*B1 という式で、C1の計算後の値を小数点以下切捨てにしたいのですが、どうすればいいのか教えてください。 今のままでは四捨五入になっています。 Excelの本で調べてROUNDDOWNを使うのかなとは思ったのですが 既にC1には計算式が入っているからか、上手くできません。 やり方はありますでしょうか?教えて下さい。

専門家に質問してみよう