• ベストアンサー

Excel2000のセルの内容について

環境:Win2000sp2, Excel2000 Excel2000である集計を行っていますが、以下の問題でつまづいています。 どなたかわかる方、回答をよろしくお願いします。 詳細が不明な場合は、これが正常かどうか程度でもいいので、お願いします。 セルの書式設定-表示形式は、標準です。 セル:内容 ○パターンA A1:=1.1-1 A2:=Len(A1) だと、3が返ります。 数式の編集でA1の中身を見ると0.1が入っています。 しかし、 ○パターンB B1:=26.4-26.3 B2:=Len(B1) だと、18が返ってきます。 数式の編集でB1の中身を見ると0.09999999999999と入っています。

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

  • ベストアンサー
  • k-family
  • ベストアンサー率34% (180/523)
回答No.1

0.09999999999999となるのは2進数の問題です。10進数を正確に2進数に変換できないので26.4-26.3の結果が0.1になっていないだけのことです。 A1やB1は数値です。lenの引数は文字列です。そこで、エクセルは気を利かして数値を文字列に直してくれているようです(私はエラーにすればいいのではないかと思いますが)。文字列にしたとき、何桁まで表示するのか、切り捨てるのか四捨五入か、等はエクセル内部で決まっていてその結果0.09999999999999となり18を返したと言うことだと思います。

BlueRay
質問者

お礼

う~ん、そこまで詳しく考えたことありませんでした。(^^; 厳密な数字を使う事が多いので、今後エクセルを信じて組んでいくのが 少しばかり・・・怖くなりました。(^^; 10進&2進の整合を取るようなことがされていれば、 出てくる問題ではないのでしょうね。 回答どうもありがとうございました。

その他の回答 (1)

  • TMINET
  • ベストアンサー率32% (45/140)
回答No.2

異常だと感じられると思いますがコンピュータの世界では正常です。 少数は浮動小数点形式で値を保持しています。(コンピュータの場合) これが便利なのですが曲者でして、説明すると長くなるので割愛しますが、要するに値を近似値で持っていると思ってください。 ですから同じ0.1と表示されていても実際は同じ値ではありません、とても近い値というわけです。 小数部の精度を指定しない場合はこんな表示になったりします。 小数部の大きい(長い)計算をすると精度を保つことも出来なくなりますのでお気を付け下さい。

BlueRay
質問者

お礼

近似値ですか・・・計算するソフトなのに、少しあいまいですね。(^^; 特にお金関係の処理をエクセルに任せるようなことはちょっと危険ですね。 大きい値になれば、少しずつずれが出てくると言う事ですから。 エクセルの利用率をもう一度考え直す必要があることがわかったのが幸いです。 どうもありがとうございました。

関連するQ&A

専門家に質問してみよう