seclan のほえほえルーム

| |

・プログラミング言語 C の新機能 Part XXXIII: LEX#2:浮動小数点定数の 16 進数表記 (1999/12/06 [])
 計算機で浮動小数点数を扱うと必ず誤差などの問題が付きまといます。例えば 10 進数の 0.1 という数値は、2進数では循環小数 0.0[0011] (0011 の部分を永遠に繰返す)となり、正確に 0.1 という値をあらわすことがきません。コンパイラなどの言語処理系は 10 進数で書かれた浮動小数点数を 2 進数に変換するので、このときの変換アルゴリズムにより、表現している値が微妙に変化してしまうことがあります。これは 10 進数から 2 進数への変換を処理系に任せることにより起こっている問題です。したがって、直接 2 進表現で浮動小数点定数を記述できれば、この問題はなくなります。
 今度の C 言語では、16 進数で浮動小数点定数を記述できるようになります。書き方は、0xaaaa.ccccP+10 のように記述します。aaaa の部分には 16 進数で整数部分を、cccc の部分には 16 進数で小数部分を、P の後ろには指数(2 のべき乗)を 10 進数で書きます。P は小文字 p でも許されており、また p の後ろには符号 + か - の記述も許されています。16 進整数定数と間違えないようにするため、この指数部は省略することができないので必要がないときも必ず 0x1234P0 のように記述する必要があります。0x1234P0f や 0x1234P0FL のように明示的に浮動小数点定数であることを示すこともできます。


by seclan


| |

 

配信

21.39 msec