• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excel rounddown関数について)

Excelのrounddown関数について

このQ&Aのポイント
  • Excelのrounddown関数を使用して、小数点以下を切り捨てた10進法で所定勤務時間との差を表示したいが、うまくいかない。
  • セルDで求めた値と所定労働時間の差を小数点以下第3位を切り捨てて表示するために、rounddown関数を使用しているが、正しい値が返ってこない。
  • セルDの値を直接入力すると正しい値が返ってくるので、数式に問題がある可能性があるが、どこを修正すればいいかわからない。

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

  • ベストアンサー
  • HohoPapa
  • ベストアンサー率65% (455/693)
回答No.3

周知のとおり、時間(や時刻)は、内部では、小数で保持し さらに、この小数を浮動小数点と呼ぶ2進数でメモリー上に格納していることから 既にコメントになりますように、人間の扱う10進数で表すと 誤差が出てきます。 今回のケースでは、最小単位が分のようですから 予め分単位の数値に変換したうえで計算し 最終段階で『10進法の時間数』にすれば、 小数を扱わなくなるので、この誤差を排除できます。 ちょっと計算式が長くなりますが紹介します。 =ROUND( ( (60*8)- ( (HOUR(A2)*60+MINUTE(A2))- (HOUR(A1)*60+MINUTE(A1))- (HOUR(A3)*60+MINUTE(A3)) ) )/60,2) 以下、技術者向けのサイトですが https://eip.econ.kanagawa-u.ac.jp/eip/excel-calc-error.html を紹介します。

noritamaoishi
質問者

お礼

ご回答ありがとうございます。 変換に伴う誤差のことが頭になく、お恥ずかしい限りです。 教えていただいた計算式でうまくいきました。 ありがとうございます。助かりました。 この様な方法があるのですね。 紹介頂いたサイトもじっくり読んでみます。

すると、全ての回答が全文表示されます。

その他の回答 (4)

  • msMike
  • ベストアンサー率20% (371/1817)
回答No.5

下記のようにすればROUND不要です。 =TEXT(("8:0"-D1)/"1:0","0.00")*1 ただし、書式はあくまでも 0.00 ですよ。

noritamaoishi
質問者

お礼

ご回答ありがとうございます。 教えていただいた計算式を実行してみたのですが 小数点以下第3位が四捨五入されてしまい、切り捨てには なりませんでした。 質問がわかりにくく申し訳ありません。

すると、全ての回答が全文表示されます。
  • msMike
  • ベストアンサー率20% (371/1817)
回答No.4

数式を =rounddown(8-(D*24),2) でなく、素直に(?) =ROUND(("8:0"-D1)/"1:0",2) にして、書式を 0.00 にしておけば良さそうなものを?

noritamaoishi
質問者

お礼

ご回答ありがとうございます。 小数点以下第3位を切り捨てにして欲しいといわれ 思いついたのがROUNDDOWN関数でして・・・。

すると、全ての回答が全文表示されます。
  • aokii
  • ベストアンサー率23% (5210/22063)
回答No.2

0.74で正しいです。0.75にはなりません。時刻の計算はややこしいです。=rounddown(8-(D*24),2)の8は時刻の単位に合っていません。

noritamaoishi
質問者

お礼

ご回答ありがとうございます。 時刻の計算は難しいですね。 わかってはいたつもりですが、痛感しました。

すると、全ての回答が全文表示されます。
  • M_Sato
  • ベストアンサー率54% (550/1003)
回答No.1

これはExcelの内部処理で、60進法と10進法を(たぶん2進法を経由して)変換するときの誤差です。 ためしに質問に挙げている例でrounddownの桁数指定を2から6に変えてみてください。0.749999となるはずです。 ですから、=rounddown(8-(D*24)+0.000001,2)のように限りなく小さい数字を加えてから切り捨てるようにするしかないと思います。

noritamaoishi
質問者

お礼

ご回答ありがとうございます。 変換するときの誤差のことが頭になく、ご指摘の通り、桁数を増やすと0.74999となり困惑していました・・・。 小さい数字を加えるという解決法もあるのですね。 勉強になりました。ありがとうございます。

すると、全ての回答が全文表示されます。

関連するQ&A