3

intmax_t或者换一种说法,%jd浮点数是否有等价物?

此处已将其作为附带问题提出,但问题太大了,我认为人们忘记回答附带问题。这也被标记为 c++,我正在寻找交流解决方案。

相关问题:

4

2 回答 2

4

据我所知,C 没有扩展的浮点类型。唯一的浮点类型是floatdoublelong double。因此,%La%Le%Lf%Lglong double似乎是您的答案。

一些实现可能会提供额外的扩展类型,但它们完全超出了标准的范围。

于 2013-06-19T11:05:08.267 回答
2

C11 没有与 intmax_t 等效的浮点(支持最大宽度的整数类型。)。未来的 C 是否应该定义某种 long long double 等。该语言目前没有无缝升级路径。

C11 6.11.1.1 “未来的标准化可能包括额外的浮点类型,包括范围、精度或两者都比 long double 更大的浮点类型。” 确实指出了您设想的更大宽度的可能性。

浮点数的情况与需要的整数不同。多年来,各种处理器的整数宽度越来越宽(8、16、32、64),128 即将出现。虽然总浮点大小相对稳定 (4,8,10,16) ,但精度、范围、编码、舍入已经引起了 FP 的很多关注。我怀疑接下来我们会看到十进制和二进制浮点规范。

另一个区别是整数在一维范围内增长。FP 可以在范围和精度上独立增长,更不用说基数的特殊性(2、10、16 等)。另请参阅下面的“IEEE 754”评论。

目前我们有 3: C11 6.2.5.4 : float,doublelong double. 如果您想创建一个向前兼容的路径,您可以准备使用 say 进行更改typedef long double Xdouble,但是您可能不得不编写许多包装函数,例如Xdouble sinX(Xdouble x);,准备许多等效的定义DBL_MANT_DIGPRIdN等等。不小的努力。

于 2013-06-19T12:54:17.590 回答