私は0.1を浮動小数点数として正確に表すことはできないことを学びました。教科書の議論では、0.1
は、バイナリベースの科学記法の一種として書くことはできませんでしたが、私は決して人々がどのように特定されていませんその引数。これに関連して、今私の質問はCanは浮動小数点として正確に表現できますか?
浮動小数点として正確に表現できますか?
ここでは、IEEE-754 binary64
の形式について説明します。
私は0.1を浮動小数点数として正確に表すことはできないことを学びました。教科書の議論では、0.1
は、バイナリベースの科学記法の一種として書くことはできませんでしたが、私は決して人々がどのように特定されていませんその引数。これに関連して、今私の質問はCanは浮動小数点として正確に表現できますか?
浮動小数点として正確に表現できますか?
ここでは、IEEE-754 binary64
の形式について説明します。
まあ、浮動小数点の仮数を収まるほど小さい整数値(あなたのケースで42
)がcontaryに正確
42 (decimal) == 101010 (binary)
表すことができ、1/10
はを正確に表現することはできません。
0.1 (decimal) == 0.0001100110011001100... (binary)
0.1
10進数は、バイナリであるであるから、
@ zell: '42'は' double'仮数に合うように十分小さい(52ビット未満):https://en.wikipedia.org/wiki/Double-precision_floating-point_format。あなたは「0.1」を「1 * 10^-1」と表現することができ、「1」と「-1」の両方を正確に表すことができます。これは「小数」型の考え方です。 –
非常に明確です。どうもありがとう! – zell
正しく覚えていれば、小数部の問題は1/2、1/4、1/8、1/16、1/32、...の組み合わせでしか近似できないということです。 1 /(2^n)、正確に0.1を得ることはできません。しかし、整数の場合、問題はないはずです。 – jonhopkins