浮点值或双精度值如何存储在C中的变量中?

浮点值或双精度值如何存储在C中的变量中?,c,floating-point,storage,C,Floating Point,Storage,我在读c语言中整数是如何存储在变量中的,最后一位用于整数的符号,其余的位用于存储数字 但是如果我们在c中使用一个双变量和一个长int变量,两者的大小都是4字节,但是浮点可以存储非常大的数字,最大范围是1038,但是相同大小的长int不能存储如此大的值 我想了解浮点存储中使用的机制。C语言不需要任何特定的数字表示 今天,大多数C实现都在使用(例外是不寻常的,可能是IBM的一些大型机) 阅读可以找到完整的解释。基本上,数字没有完全存储,只是大约。32位用于存储尽可能多的精度。任何数据类型的表示都是

我在读c语言中整数是如何存储在变量中的,最后一位用于整数的符号,其余的位用于存储数字

但是如果我们在c中使用一个双变量和一个长int变量,两者的大小都是4字节,但是浮点可以存储非常大的数字,最大范围是1038,但是相同大小的长int不能存储如此大的值


我想了解浮点存储中使用的机制。

C语言不需要任何特定的数字表示

今天,大多数C实现都在使用(例外是不寻常的,可能是IBM的一些大型机)


阅读

可以找到完整的解释。基本上,数字没有完全存储,只是大约。32位用于存储尽可能多的精度。

任何数据类型的表示都是由实现定义的。这里有一个用于浮点数的表示。请使用Google查找有关浮点数编码的说明。或者简单地打开维基百科。它的方式与你的10位数计算器显示大数字的方式相同:科学符号1.23456789E42=1.23456789*10^42。虽然数字要大得多,但精度可能仍然不超过10位。检查计算(1e50+1)-1e50时发生的情况,结果应该是1,但最终可能是0。没有最后一位这样的东西。最高有效位几乎被普遍用作有符号整数表示的符号位。此外,还记录了双精度:OP似乎有点困惑:他提到了
double
,意思是
float
。还应记录这只是一个实现,是最常见的实现,但不是唯一的实现。除了理论之外,这些文章还将向OP提供一个实际的、相当常见的实现的详细信息:以及