c++ - 固定大小的浮点类型




2 Answers

目前在C或C ++标准中不存在这样的情况。 实际上,甚至没有保证float将是一个二进制浮点格式。

一些编译器保证float类型是IEEE-754 32位二进制格式。 有些人没有。 实际上, float实际上是大多数非嵌入式平台上的IEEE-754 single类型,尽管关于某些编译器以更广泛的格式评估表达式的常见警告适用。

有一个工作组正在讨论为2008版IEEE-754添加C语言绑定,可以考虑建议添加这样的typedef。 如果将它添加到C中,我希望C ++标准最终会效仿。

stdint.h (C99), boost/cstdint.hppcstdint (C ++ 0x)头文件中,除其他外,还有int32_t类型。

是否有类似的固定大小浮点类型? 像float32_t这样的float32_t




如果你认为像float32_t和float64_t这样的typedef由于任何原因都是不切实际的,你必须习惯于熟悉的操作系统,编译器,以至于你无法看到你的小窝之外。

存在本机运行32位IEEE浮点运算的硬件和其他运行64位的硬件。 有时这样的系统甚至不得不互相交谈,在这种情况下,知道每个平台上的双精度是32位还是64位是非常重要的。 如果32位平台基于另一个64位值进行过多计算,我们可能希望根据时序和速度要求转换为较低的精度。

我个人觉得使用浮子和双打感觉不舒服,除非我确切知道他们在我的平台上有多少位。 如果我通过某些通信渠道将这些转移到另一个平台,那就更是如此。




Related

c++ c boost floating-point