5

GCC のドキュメントでは、最近の GCC での限定的な 10 進浮動小数点のサポートについて説明しています。

しかし、実際にどのように使用するのですか?

たとえば、Fedora 18、GCC 4.7.2 では。

のような単純な C プログラム

int main()
{
    _Decimal64 x = 0.10dd;
    return 0;
}

コンパイルします (-std=gnu99 を使用する場合) - しかし、_Decimal64 値を出力したり、文字列を _Decimal64 値に変換したりするなど、他の便利なことを実際に行うにはどうすればよいでしょうか?

ドキュメントでは、printf のような (私が推測する) ための「別の C ライブラリの実装」について話しています。

私はもう試した

printf("%Df\n", x);

これは機能しませんでした - printf が作成したばかりです: %Df.

4

1 に答える 1

5

ドキュメントが言うように、GCC は I/O を提供しません。これは、GCC ではなくprintflibc によって提供されるためです。

printfIBM は、 10 進 I/O を機能させるフックを追加する GNU C ライブラリー libdfp の拡張機能に貢献しました。私はそれを使用していませんが、eglibc svn リポジトリからコードを取得して自分でビルドできるはずです。

svn co http://www.eglibc.org/svn/libdfp/trunk libdfp

Web 検索では、Ubuntu パッケージがこれを として示しておりlibdfp、RHEL6 でも利用できる可能性があります。

README には次のように書かれています。

When libdfp is loaded printf will recognize the following length modifiers:

        %H - for _Decimal32
        %D - for _Decimal64
        %DD - for _Decimal128

It will recognize the following conversion specifier 'spec' characters:

        e,E
        f,F
        g,G
        a,A  (as debuted in ISO/IEC TR 24732)

Therefore, any combination of DFP length modifiers and spec characters is
supported.
于 2013-02-17T18:26:38.693 に答える