• ベストアンサー

エクセルで少数の連続入力のこと。

エクセルで、6.0 6.1 6.2 ・・・・・・と入力したいと思い、6.0と6.1を範囲指定して、下にコピーしたら、表示上は、問題なかったのですが、セルにカーソルをあわせると、8.19999999999みたいな数字がところどころにあったのですが、これは何でしょうか。また、これを防ぐにはどう入力すればよいでしょうか。よろしくお願いします。

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

こんにちは。 >下にコピーしたら、表示上は、問題なかったのですが ドラッグダウン・コピーの仕組みというのは、 6.1 - 6.0 =0.1 の差を取って、その差を、次の出てくる数に足しているわけなのです。小数点を含む計算の中で、『引き算』と『割り算』は、「浮動小数点丸め誤差」といって、正しい計算が出てこないことがあります。 典型的な例では、時間計算が該当します。 ですから、比較演算子を使った、< , >, = などは、違った結果になってしまいます。 原則: 小数点を含む、引き算や割り算は、丸め誤差が発生することがあります。 関数のMOD,CEILING,FLOOR に、見かけ上は、引き算はなくても、小数点を用いると誤差が発生することがあります。 逆に、「計算上で、引き算や割り算の仕組みを作らない限りは、発生しません。」 数値は上から15桁までが有効であり、16桁目以降は不正確です。つまり、無限小数の発生する場合は、数値で、正確に表現することは不可能です。 (時間)-(時間) は、原則的に丸め誤差が発生します。 対処法: 文字列から数字を取る方法(小数点固定法)  VALUE(FIXED($A$2-$A$1,1)) 整数にして計算する方法(整数変換法)  ($A$2*10-$A$1*10)/10 通常は、整数にするか、一旦、文字列にします。ワークシートでは、ROUNDUP やROUNDを使う人がいますが、気をつけて使わないと、違う結果になることがあります。使う場合は、よく調べてみる必要があります。また、よく誤解している方がいますが、定数には、浮動小数点誤差は存在しません。演算して始めて誤差が出ます。 #2さんで解答は既出ですが、 A2~ =$A$1+ROW(A1)*0.1 (定数が必要な場合は、範囲を選択して、右クリック-形式を選択して貼り付け-値をクリック) このような式で作ってみて、ドラッグダウン・コピーしてみてください。それを、前回のドラッグダウン・コピーでつくったものと比較してみてください。A16 以降はずれているはずです。 なお、これは、日経PC21のその「表計算の丸め誤差」を発表した方はご存知なかったようですが、これは、既に、MS-DOSの時代に、1980年代後半に、ロータス社、マイクロソフト社、両社で、その発表をしたもので、関係者では周知のことです。しかし、それでもなお、MS-DOSの表計算のほうが、この誤差の発生することが少なかったのです。特に、金利や為替を扱う経理関係者の中で対処が促されたことですが、関係者にとっては、ある意味致命的な問題です。 #3のimogasiさんのおっしゃるように、私も、ことさら気にする必要はない、と思っていますが、対処法を把握していれば、十分だと思います。 日経PC21の記事の内容はセンセーショナルな割には、針小棒大になってしまい、逆にうやむやになって理解しにくくなった気がします。

その他の回答 (4)

  • takkuni
  • ベストアンサー率24% (166/676)
回答No.5

どうしてそうなるのか難しいことは分かりませんが、6.0と入力したらセルの右下にカーソルを合わせて(+の形になります。)右クリックしたまま下にドラッグします。 出てきたメニューから、連続データをクリックします。 出てきた画面で加算・増分値を0.1にしてやると仰るような現象にはならないようです。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

理解するには、相当な前提となる知識が要りますよ。 http://pc21.nikkeibp.co.jp/special/gosa/eg1.shtml をじっくり読んでください。 エクセルでも他でも小数点つきの数(実数)ではそのようになります。 浮動小数点演算を使っているからです。 上記WEBページのうち直接の関連箇所は http://pc21.nikkeibp.co.jp/special/gosa/eg4.shtml >これを防ぐにはどう入力すればよいでしょうか 上記WEBページに解説してあることを理解することです。 余程、学が進むまでは「気にするな」ということになるでしょうか。 その他 http://oku.edu.mie-u.ac.jp/~okumura/software/excel/roundoff.html http://www.kentei.ne.jp/quali/column/knowhow/030415.html

  • zenjee
  • ベストアンサー率47% (50/106)
回答No.2

A1を6.0(表示形式の数値で小数点以下の桁数は1)とすると、A2に =A$1+(ROW(A2)-1)/10 と入力し、下にフィルハンドルでコピーするとそのような数値表示は出ません。 もちろんそのままカーソルを合わせても計算式だけしか表示されないので、A列をB列にコピー→値のみペーストし、表示形式を少数点を10桁ぐらいにして試してみて下さい。.9999999は出ないと思います。 同じような式でもA2に =A1+0.1 としたときは、フィルハンドルコピーした場合、7.5ぐらいで「7.49999999」のようになりますね。 単純に6.1:6.2を選択して下にフィルハンドルコピーしたときもそのようになります。私では理由は分からないので、他の方の回答に期待ます。

  • zorro
  • ベストアンサー率25% (12261/49027)
回答No.1

書式メニューのセルで表示方法を決定のうえ、小数点以下の桁数を指定します。

関連するQ&A