2016-02-29 65 views
-4

我的问题很简单,如何打印很长很长的双输出?我知道如何打印长双即不能打印很长很长的双输出

printf("%Lf",output); 
+6

你会如何声明**“long long”double?你试过了吗? AFAIK,不存在这样的类型... – DevSolar

+2

你使用什么编译器?我不知道有任何支持“长双倍”的东西。 – dbush

+0

我正在使用gcc编译器 –

回答

6

你通过long long double意味着什么呢?你的编译器是否真的接受这个语法?在旧版本gcc中似乎存在一个错误,用于解析此long long double并将其识别为long long int。此bug已被修正很久以前:https://gcc.gnu.org/bugzilla/show_bug.cgi?id=6634

如你所知,C标准支持长长整数类型:

  • long long int可以打印格式%lld%lli
  • unsigned long long int与格式%llu%llo%llx

及长浮点类型:

  • long double印有%Lf%Lg%Le

其他类型也可能存在于一些实现的具体目标,但非标:

这些都不被实现为long long double共同的编译器...

这些格式不广泛的支持,至少可以说,没有标准printf转化率的定义。查看您的编译器文档以获取可能的扩展或特定函数,以便将这些扩展精度浮点格式(如果它们完全在您的目标上可用)进行转换。

1

long longlong long intlong double(取决于编译器)。

没有long long double。永远不会。

+0

'long long unsigned'。 ;-) – DevSolar

+1

IEEE 754定义完善[binary256](https://en.wikipedia.org/wiki/Octuple-precision_floating-point_format)超过8年。如果C采纳了它,称它“长双倍”是非常合理的。 AFAIK,@david watson可能有一个微不足道的错误,或者正在使用前沿编译器。这回答“永远不会”。是多报。 – chux