Ada*_*dam 2 c floating-point types
为了在0-1互斥之间存储值,我分配了以下缓冲区:
float *buff = malloc(n* sizeof(float))
Run Code Online (Sandbox Code Playgroud)
但是,我认为在分配较小的内存大小时,使用float并不能自由选择large n,例如n=10,000。由于float的大小为32 bit,我想知道是否存在另一种方法来通过变通办法或选择其他数据类型来减小此大小。
C没有小于的浮点类型float。
有几种整数类型可能(但不能保证)小于float:
signed charunsigned charsigned shortunsigned short当然,这些unsigned类型不能容纳负值,然后没有一个可以容纳分数。
您可以始终定义自己的类型,例如,仅将一个signed char值(通常在-128.. 范围内+127)解释为小数值。我见过16位浮点布局,以为C或大多数硬件都不直接支持它们。
请注意,执行缩放的其他代码的大小可能会超过您保存的数据大小。另一方面,代码和数据大小不一定可以互换。
如果我们对您要表示的值的范围和精度有更多了解,那么回答您的问题会容易得多。
请注意,除非您在小型嵌入式系统上,否则分配10,000个float对象的数组可能很简单。除非您确定有必要,否则不要在使用较小的类型上花费过多的精力。