バイナリ形式で表される浮動小数点値には、特定の10 進精度はありません。数値が一定量の10 進数を表すことができるという仕様を読んだからといって、実際にはあまり意味がありません。これは、物理的な (そして意味のある) 2 進精度を、あまり意味のない 10 進近似に大まかに変換しただけです。
2 進浮動小数点形式の 1 つの特性は、2 のべき乗の有限和 (2 の負のべき乗を含む) として表現できる数値のみを正確に (その仮数幅の制限内で) 表現できることです。0.5
, 0.25
, (10 進数) のような数値は、2 の累乗 ( , ) またはその合計である0.75
ため、2 進浮動小数点形式で正確に表されます。2^-1
2^-2
一方、10 進数などの数は0.1
、2 の累乗の有限和では表現できません。0.1
浮動小数点 2 進数での 10 進数の表現の長さは無限です。0.1
これは、 を有限バイナリ浮動小数点形式で正確に表すことができないことを直ちに意味します。0.1
10 進数が 1 桁しかないことに注意してください。ただし、この数はまだ表現できません。これは、浮動小数点の精度を 10 進数で表現することはあまり役に立たないという事実を示しています。
0.85
あなたの例のような値0.65
も表現できません。そのため、有限バイナリ浮動小数点形式への変換後にこれらの値が歪んでいるのがわかります。実際、日常生活で遭遇するほとんどの小数 10 進数は、これらの浮動小数点型がどれほど大きいかに関係なく、2 進浮動小数点型では正確に表現できないという事実に慣れる必要があります。