gcc 如何在愚者中打印/转换十进制浮点值?

ttp71kqs  于 2022-11-30  发布在  其他
关注(0)|答案(1)|浏览(110)

愚者文档描述了最近愚者中有限的十进制浮点支持。
但我如何实际使用它呢?
例如,在Fedora 18上,愚者4.7.2。
一个简单的C程序

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

编译(当使用-std= gnu 99时)-但是我实际上如何做其他有用的事情-比如打印_Decimal64值或者将字符串转换为_Decimal64值?
这些文档谈到了“一个单独的C库实现”,用于(我假设)像printf这样的事情--我必须使用哪个额外的库来打印十进制浮点计算的结果?
我试过了

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

这不起作用- printf只生成了:%Df .

pcww981p

pcww981p1#

正如文档所述,愚者不提供I/O,因为printf等是由libc而不是愚者提供的。
IBM为GNU C库贡献了一个扩展libdfp,它添加了printf钩子来使Decimal I/O工作。
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.

但是正如下面的评论所指出的,这个库最初只在s390和powerpc硬件上支持,看起来对aarch 64的支持是在几个月前(2022年9月)添加的,并且有x86和x86_64的目录,所以现在可能为这些类型做I/O。

相关问题