AIと戦って、あなたの人生のリスク診断 >>

EXCELにて任意のセルに、数値で「58596.723」と入力すると「58596.7229999999」に変換されて格納されます。
なぜでしょう?

なお、「58596.722」・「58596.724」・「5859672.3」・「585967.23」・「5859.6723」では問題ありません。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

>どの頻度で発生するのかわからないので困ります。


>偶然入力した数字が、このケースというのは稀ですかね?

結構ありますよ。

ですので、厳密に計算させる場合は小数点入力をしちゃだめです。
全て「整数」で入力させ「整数」のまま演算、最後でROUND関数を
使って端数処理をするんです。銀行などの金額計算マクロを作る
場合、私は必ずそうやって誤差を回避しています。

まあ、大体でいいなら「書式」「セル」の「表示形式」タブで
「数値」などを選択、「小数点以下の桁数」を強制的に指定します。
こうすれば、その桁未満の値を四捨五入して表示しますので、大概の
場合、表示・計算ともに問題なく行われます。まあ、このやり方を
100%信頼すると、最悪、値が倍や半分になる可能性も無いわけじゃない
んですけどね。
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/11/08 13:10

それはExcelがデータを2進数で保持しているからで、仕様です。



2進数の小数点以下の数字は、その特性上10進数と1対1には対応
していません。ですので表現できない10進小数が存在するのです。

これに限らず、Excelは非常に「計算が苦手な」ソフトです。
厳密な計算する場合は示したURLの事象を理解してから行って下さい。
http://pc.nikkeibp.co.jp/pc21/special/gosa/index …
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/11/08 10:55

エクセルのバージョンが書かれていませんが、



質問の現象と若干異なりますが
関連する情報を
www.itmedia.co.jp/news/articles/0709/27/news018.html
    • good
    • 0
この回答へのお礼

バージョンは9.03821 SR-1です。

ありがとうございました。
勉強になりました。

お礼日時:2007/11/08 10:45

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング