c - 我们可以找到另一个小于float的数据类型吗?

标签 c types floating-point

为了在0-1互斥之间存储值,我分配了以下缓冲区:

float *buff = malloc(n* sizeof(float))


但是,我认为在分配较小的内存大小时,使用float不能自由选择较大的n,例如n=10,000。由于float的大小为32 bit,我想知道是否存在另一种方法来通过变通办法或选择其他数据类型来减小此大小。

最佳答案

C没有小于float的浮点类型。

有几种可能(但不保证)小于float的整数类型:


signed char
unsigned char
signed short
unsigned short


当然,unsigned类型不能容纳负值,然后没有一个可以容纳分数。

您可以始终定义自己的类型,例如仅将signed char值(通常在-128 .. +127范围内)解释为小数值。我看过16位浮点布局,以为C或大多数硬件都不直接支持它们。

请注意,执行缩放的其他代码的大小可能会超过您保存的数据大小。另一方面,代码和数据大小不一定可以互换。

如果我们对您要表示的值的范围和精度有更多了解,那么回答您的问题会容易得多。

请注意,除非您在小型嵌入式系统上,否则分配10,000个float对象的数组可能很简单。除非您确定有必要,否则不要在使用较小的类型上花费过多的精力。

关于c - 我们可以找到另一个小于float的数据类型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39583488/

相关文章:

c - sizeof(struct) 如何帮助提供 ABI 兼容性?

java - 如何在 Android 程序的 Eclipse 中将变量声明为 OpenGL 的 GLuint 类型?

typescript :检查值是否包含在类型中

c - 如何检测内存泄漏?

c - 即使进程未刷新,cmd.exe 如何显示标准输出?

客户端在执行时终止(pthread)

c - int、short、long、long long 的大小?

c++ - VS2013 : compiler bug with float and/EHa +/fp:strict?

java - float 的位模式是有序的吗?

floating-point - PLC 结构化文本,将十进制转换为实数( float )。没有得到我期望的值(value)。 (IEEE-754)