5

http://sourceware.org/ml/glibc-cvs/2013-q1/msg00115.htmlに出くわしました。これには次の行が含まれています

#define  TWO5      0x1.0p5      /* 2^5     */

どうやら、 TWO5 は明示的な値を持つ double として定義されています1<<5。しかし、この表記は初めて見ました。この形式はどのように使用されてきましたか? また、単に書くことよりも優れている点は何2.5ですか?

4

3 に答える 3

6

この表記法は C99 で導入されました。利点は、値が 16 進数形式で表現されるため、基になる表現と 10 進数形式の間で浮動小数点値を変換するときに発生する丸めなどの影響を受けないことです。

この表記について説明しているページはたくさんあります。たとえば、次のようになります。

http://www.exploringbinary.com/hexadecimal-floating-point-constants/

于 2013-02-06T12:21:55.947 に答える
3

これは、C99 に付属していた 16 進浮動小数点表記です (と思います)。利点は、そのような定数を正確に表現可能な値で指定できることです。(これは、浮動小数点数の基数が 2、4、8、または 16 であることを前提としています:)

于 2013-02-06T12:21:55.083 に答える
2

これは、 C99 ドラフトで定義されている 16 進浮動小数点定数の文法であり、正規表現として記述されています。

0[xX]([a-fA-F0-9]*[.][a-fA-F0-9]+|[a-fA-F0-9]+[.]?)[pP][+-]?[0-9]+[flFL]?

4つの部分で構成されています:

  • 0[xX]: 16 進数のプレフィックス、次の 2 つのいずれか:

    0x
    0X
    
  • ([a-fA-F0-9]*[.][a-fA-F0-9]+|[a-fA-F0-9]+[.]?): 16 進数の小数定数。例:

    34.2f
    .de
    b3.
    

    または 16 進数の数字列 (16 進数の整数)。例:

    2f4
    10
    

    2 番目の部分では、基本的に仮数部について説明します。

  • [pP][+-]?[0-9]+: 2 進指数部 (10 進数で指定)。例:

    p-4
    p20
    

    仮数部を 16 進数で指定し、指数 b (基数 2) を 10 進数で指定して、16 進数の浮動小数点定数を指定します。

  • [flFL]?float: タイプ ( 、doubleまたは)を示すオプションの浮動サフィックスlong double

于 2013-02-06T12:40:25.040 に答える