对于现代通用计算机,FLT_RADIX 在 C11 中不是 2 吗?

Is FLT_RADIX ever not 2 in C11 for modern general purpose computers?

这几乎就是我在标题中的问题。使用其他任何东西似乎完全不自然。

在对此进行研究时,我发现有硬件支持 base 10 的历史示例,以及更现代的 IBM POWER6 和系统 z9 示例。即使在这些情况下,我也不知道 FLT_RADIX 在任何主流 C 编译器上是否为 10。

我特别担心的是,我正在为一个在通用计算机上只会 运行 的应用程序编写代码,我想知道我是否可以静态断言 FLT_RADIX==2 而无需认真对待关注,就像我目前如何静态断言 !(unsigned char)256.

附件 F,C 标准的 "optional" 部分,对于任何使用浮点的严肃实现来说都是非可选的,需要 IEEE 单精度和双精度(binary32 和 binary64)floatdouble,因此 FLT_RADIX 应该始终为 2。在支持新的小数浮点数的系统上,它是一个单独的扩展类型; FLT_RADIX==10 不用于它。