- ベストアンサー
Excel関数(ROUNDDOWN)について
- Excel関数(ROUNDDOWN)の使い方と正しい結果の取得方法について教えてください。
- ROUNDDOWN関数を使用して計算結果を整数で表示する方法や、小数点以下を表示させない方法について教えてください。
- ROUNDDOWN関数を使って計算結果を切り捨てる際に、意図しない結果が表示される場合の解決方法について教えてください。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
一つ、面白い実験をしてみましょう。 新しいブックを作って、各セルに、以下のように入力してみて下さい。 A1: =1/3 A2: =0.333333333333333333333333333333333333333333333333333 A3: =A1*3 A4: =A2*3 B1: =(A1=A2) B3: =(A3=A4) 結果、以下のようになったはずです。 A B 1 0.333333333 TRUE 2 0.333333333 3 1 FALSE 4 1 B1セルの「TRUE」の表示は「A1とA2は等しい」と言う事を意味します。 B3セルの「FALSE」の表示は「A3とA4は等しくない」と言う事を意味します。 A3、A4は、A1、A2をそれぞれ3倍したのですから、元が等しいなら、3倍しても等しい筈です。 ですが「3倍した物同士は等しくない」と言う結果がB4に表示されています。 この場合、本当にそうなのか、確かめる事が出来ます。 A列の全体を範囲指定して、セルの書式を「数値」にして、小数点以下の桁数を「20」とかにしてみると確かめられます。 小数点以下20桁にすると A B 1 0.33333333333333300000 TRUE 2 0.33333333333333300000 3 1.00000000000000000000 FALSE 4 0.99999999999999900000 と言う表示になった筈です。確かに「A1とA2は同じ値」で「A3とA4は異なる値」であるのが見て判ります。 これで判るのは「1/3と0.333333333333333333333333333333は、見た目は同じ値だけど、本質は違う値」と言う事です。 これは「35,000÷30×12と13999.99999999は、本質は違う」と言う事を意味します(この場合は値も違ってるけど) 因みに、コンピュータの2進数の世界では「0.1」と言う値は循環少数になって正確に0.1を表す事が不可能なので、0.1を多用する(つまり、10で割る)と、誤差が溜まって不正確な値が出て来ます。
その他の回答 (5)
- chie65536(@chie65535)
- ベストアンサー率44% (8800/19958)
>例 : 35,000÷30×12 = 13,999.99999999・・・・ という結果になりますが、 いいえ。なりません。 エクセルで =35000/30 と言う式を打ち込むと(標準のセル書式では) 1166.667 になります。セルの書式を「数値」にして「小数点以下の桁数」を20とかにしてみて下さい。 1166.66666666667000000000 と言う表示になります。 これを12倍する式 =1166.6666666666700000000*12 を打ち込むと、結果は 14000.00000000000000000000 になります。 14000をどうROUNDDOWNしても、絶対に13999にはなりません。 嘘の値である13999が欲しい場合は、嘘の式 =ROUNDDOWN(ROUNDDOWN(35000/30,1)*12,0) と書いて、EXCELに嘘を表示させるしかありません。
お礼
その通りですね。 1166.6666666666666666666666666666666666666666666666666666666666666となっても 12を乗ずれば14000.000000000000000000000000000000000000000000000000000・・・・・2(終わりとすれば)ですので、ROUNDDOWNであれば14000は正解でした。 1166.66666という少数点の乗数という概念に惑わされてしまいました。 貴重な時間どうもありがとうございました。
- mt2008
- ベストアンサー率52% (885/1701)
手順以前に、あなたの計算が間違っています。 3500/30*12=1400です。13999.99999…ではありません。 13999.99999…は、おそらく8桁ぐらいしか表示できない電卓で計算した結果ではないですか?
お礼
その通りですね。 切捨て関数では、1,400の値が正解です。 ありがとうございました。
- KURUMITO
- ベストアンサー率42% (1835/4283)
どのパソコンでも同じ値が表示されますね。 計算結果は整数の表示にしたいわけですから例えば1よりかなり小さい数値を式の上で引くことで良いでしょう。 =ROUNDDOWN(35000/30*12-0.01,0)
お礼
ありがとうございました。
- keithin
- ベストアンサー率66% (5278/7941)
>例 : 35,000÷30×12 = 13,999.99999999・・・・ という結果になります いいえ。それは多分「電卓計算」でそうなると思われたのだと思いますが,エクセルはもっと「賢い」ので14000という『正しい』計算結果になります。 35,500÷30×12 =35500 ÷(3×10)×12 =35500 ÷10×4 繰り返しますが,ナニが間違っていると言えば「アナタの期待した計算結果の方が間違って」ます。 それでも敢えてご希望の計算結果を求めたいなら, =ROUNDDOWN(ROUNDDOWN(35000/30,8)*12,0) などのようにすることは出来ます。
- root_16
- ベストアンサー率32% (674/2096)
35000÷30はエクセルで小数点以下を表示させていくと 1166.66666666667と表示されます。 例えばROUNDDOWN(35000/30,10)なら 1166.6666666666と表示されます。 35000÷30×12=35000×2/5=14000で正しいです。 14000をROUNDDOWNしても14000のままです。 なので、計算機と同じっぽくしたいなら ROUNDDOWN(35000/30,10)×12 として小数点をいっぱい表示させてやると 13999.9999999992と表示されます。 ここで13999という結果が欲しければ ROUNDDOWN(ROUNDDOWN(35000/30,10)*12,0) とすれば 13999という結果が得られます。
お礼
その通りですね。 1166.6666666666666666666666666666666666666666666666666666666666666となっても 12を乗ずれば14000.000000000000000000000000000000000000000000000000000・・・・・2(終わりとすれば)ですので、ROUNDDOWNであれば14000は正解でした。 1166.66666という少数点の乗数という概念と、電卓の表示に惑わされてしまいました。 貴重な時間どうもありがとうございました。