• ベストアンサー

EXCELの数値保持の仕様は?

EXCELにて任意のセルに、数値で「58596.723」と入力すると「58596.7229999999」に変換されて格納されます。 なぜでしょう? なお、「58596.722」・「58596.724」・「5859672.3」・「585967.23」・「5859.6723」では問題ありません。

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

  • ベストアンサー
  • FEX2053
  • ベストアンサー率37% (7995/21384)
回答No.3

>どの頻度で発生するのかわからないので困ります。 >偶然入力した数字が、このケースというのは稀ですかね? 結構ありますよ。 ですので、厳密に計算させる場合は小数点入力をしちゃだめです。 全て「整数」で入力させ「整数」のまま演算、最後でROUND関数を 使って端数処理をするんです。銀行などの金額計算マクロを作る 場合、私は必ずそうやって誤差を回避しています。 まあ、大体でいいなら「書式」「セル」の「表示形式」タブで 「数値」などを選択、「小数点以下の桁数」を強制的に指定します。 こうすれば、その桁未満の値を四捨五入して表示しますので、大概の 場合、表示・計算ともに問題なく行われます。まあ、このやり方を 100%信頼すると、最悪、値が倍や半分になる可能性も無いわけじゃない んですけどね。

BFMR
質問者

お礼

再度返答ありがとうございます。 過去に、理由もわからず、整数化+ROUNDDOWN等はやった経験があります。 あくまでも「計算結果」を補正するためでした。 今回は「入力数字そのもの」が正しく入力されないため、回避方法を模索していました。 入力数字自体も整数化する必要あり。として今後の仕様を考えます。

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

その他の回答 (2)

  • FEX2053
  • ベストアンサー率37% (7995/21384)
回答No.2

それはExcelがデータを2進数で保持しているからで、仕様です。 2進数の小数点以下の数字は、その特性上10進数と1対1には対応 していません。ですので表現できない10進小数が存在するのです。 これに限らず、Excelは非常に「計算が苦手な」ソフトです。 厳密な計算する場合は示したURLの事象を理解してから行って下さい。 http://pc.nikkeibp.co.jp/pc21/special/gosa/index.shtml

BFMR
質問者

お礼

ありがとうございました。 勉強になりました。 どの頻度で発生するのかわからないので困ります。 偶然入力した数字が、このケースというのは稀ですかね?

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

エクセルのバージョンが書かれていませんが、 質問の現象と若干異なりますが 関連する情報を www.itmedia.co.jp/news/articles/0709/27/news018.html

BFMR
質問者

お礼

バージョンは9.03821 SR-1です。 ありがとうございました。 勉強になりました。

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

関連するQ&A