- 締切済み
固定小数点で0.1?
10進から、2進数、16進数に変換するのによくわからないことがあります。 固定小数点で0.1はどのように表せるのでしょうか? どなたかわかりやすく教えてください。お願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- haporun
- ベストアンサー率40% (230/562)
回答No.2
固定小数点型としては、VC++ではCurrencyやDecimalが構造体、クラスとして用意されています。 固定小数点数は、整数の情報と小数点がどの数字と数字の間にあるかという情報を記録します。 自分で作るとしたら struct FIXED_DECIMAL{ int num, digit; }; がnum*10^digitをあらわすような感じ。
- takebou
- ベストアンサー率43% (27/62)
回答No.1
2進数で考えると、整数の場合、2の0乗、2の1乗、2の2乗・・・となりますよね。 固定小数も考え方は同じで、2の-1乗、2の-2乗・・・となります。 8ビットで考えると、 +0.5なら、 01000000 +0.25なら、00100000 +0.125なら、00010000 負の数なら、これらの数字の2の補数を取れば良いだけです。 つまり、0.1ちょうどという数は表せません。
お礼
あるプログラムでの閾値で0.1を使おうとしたらこのような問題にぶつかりました。 考え直して見ます。 ありがとうございました。