【发布时间】:2013-09-13 08:28:07
【问题描述】:
有没有办法在 C++ 中声明 32 位浮点值 - 确保无论平台/编译器如何,它始终是 32 位?
我可以对这样的整数做到这一点:
#include <stdint.h>
uint32_t var; //32 bit unsigned integer
uint64_t var1; //64 bit unsigned integer
有没有办法为花车做类似的事情?据我所知,
float var; //Usually is 32 bit, but NOT GUARANTEED to be 32 bit
是特定于实现的,不一定是 32 位的。(如果我错了,请纠正我)。
我正在使用 qt,所以如果有任何使用它的解决方案,我会接受它 - 我找不到类似 quint16 的浮点数(qreal 会根据平台更改大小)。
【问题讨论】:
-
否 - 某些平台可能有十进制浮点数。
-
如果平台不支持 32 位二进制浮点数据类型,您将如何处理?
-
那么,如果
float不是 32 位,您究竟希望发生什么?当然可以检查if (sizeof(float) != 4 && CHAR_BITS == 8) PANIC("Not 32-bit float!!!");- 但如果没有 32 位浮点数,我不确定你希望编译器做什么...... -
那么,您编写的代码可能会在真正不起眼的硬件上运行吗?我的意思是 DSP 和大型而古老的大型机?如果不是,那么我会说忽略这个问题...... [我感觉 QT 在大型机上无论如何都不能很好地工作,而且 DSP 往往非常专业]。
-
毫无意义。即使您有两个都是 32 位的浮点数,当一个具有 23 位尾数而另一个具有 25 位尾数时,它们仍然不兼容。您需要指定所有宽度,而不仅仅是总宽度。
标签: c++ qt types floating-point