邯郸个人做网站,wordpress 多层边栏,设计师个人网站欣赏 中国,建设银行网站建设情况文章目录 一#xff0c;什么是浮点数二#xff0c;C语言中的浮点数1#xff0c;float1.1 float的声明1.2 float的存储格式1.3 float的精度和范围 2#xff0c;double2.1 double变量的声明2.2 double的存储格式1.3 double的精度和范围1.4 long double 3#xff0c;0.2 0.1… 文章目录 一什么是浮点数二C语言中的浮点数1float1.1 float的声明1.2 float的存储格式1.3 float的精度和范围 2double2.1 double变量的声明2.2 double的存储格式1.3 double的精度和范围1.4 long double 30.2 0.1 ≠ 0.34优先使用double 三C语言中的浮点数表示法 一什么是浮点数
浮点数是计算机存储小数的一种方式在C语言中任何带小数点的数都被编译器解释为浮点数。
顾名思义浮点数就是小数点可以浮动的数。
要了解浮点数先回忆下科学计数法数字3140可以有如下多种表示方法 这种表示方法中小数点是可以移动的称之为浮点数。
有没有小数点固定的定点数呢理论上是有的但是C语言标准中没有定点数的规定。
所以浮点数是一种用计算机中用科学计数法表示小数的形式。
所谓“浮点数”就是使用 m * bⁿ 的形式存储一个数值
m是小数部分b是基数通常是2n是指数部分
这种形式是精度和数值范围的一种结合可以表示非常大或者非常小的数。
二C语言中的浮点数
在C语言中存在单精度single precision和双精度double precision两种浮点数类型分别对应于float和double数据类型。 单精度浮点数float这是C语言中的一种基本浮点数类型通常占用32位4字节存储空间。它可以表示大约6到7位十进制数的精度数值范围大约从-3.40282347E38到3.40282347E38。 双精度浮点数double这是C语言中另一种更广泛使用的浮点数类型占用64位8字节存储空间。它提供了更高的精度大约可以表示15到16位十进制数的精度数值范围大约从-1.7976931348623157E308到1.7976931348623157E308。
1float
1.1 float的声明
浮点数的类型声明使用float关键字可以用来声明浮点数变量。
float c 10.5;上面示例中变量c的就是浮点数类型。
1.2 float的存储格式
在C语言中float类型的浮点数遵循IEEE 754标准占用4个字节32位其由三部分构成 1位符号位S表示数的正负。8位指数位E使用偏置表示法存储指数偏置值为127。23位尾数位M存储小数部分的实际二进制位实际表示时假设在最前面有一个隐含的1即尾数的精度实际上是24位。 1.3 float的精度和范围
23位尾数位决定了float类型的精度其能表示小数点后有6~7位小数的十进制数字。
float类型的指数范围为十进制的-38到38。
float类型数值范围用十进制表示大约从-3.40282347E38到3.40282347E38。
2double
2.1 double变量的声明
双精度浮点数的类型声明使用double关键字可以用来声明浮点数变量。
double c 10.5;上面示例中变量c的就是浮点数double类型。
2.2 double的存储格式
在C语言中double类型的浮点数遵循IEEE 754标准占用8个字节64位其由三部分构成 1位符号位S表示数的正负。11位指数位E使用偏置表示法存储指数偏置值为1023。52位尾数位M存储小数部分的实际二进制位实际表示时假设在最前面有一个隐含的1即尾数的精度实际上是53位。 1.3 double的精度和范围
52尾数位决定了float类型的精度其能表示小数点后有15~16位小数的十进制数字。
double类型的指数范围为十进制的-308到308。
double类型数值范围用十进制表示大约从-1.7976931348623157E308到1.7976931348623157E308。
1.4 long double
C语言还提供了一个long double类型其精度和范围依编译器而定可能比double更高通常占用16个字节但并非所有系统上都有显著的差别。
30.2 0.1 ≠ 0.3
注意由于存在精度限制浮点数只是一个近似值它的计算是不精确的比如 C 语言里面0.1 0.2并不等于0.3而是有一个很小的误差。
if (0.1 0.2 0.3) // false关于这个问题更详细的解释可以参考https://blog.csdn.net/epitomizelu/article/details/139115670
4优先使用double
在实际编程中选择使用float还是double取决于对精度的需求和存储空间的考虑。
double类型因其更高的精度而被推荐为默认的浮点数类型除非有特别的内存限制或性能考虑。
三C语言中的浮点数表示法
C 语言允许使用科学计数法表示浮点数使用字母e来分隔小数部分和指数部分。
double x 123.456e3; // 123.456 x 10^3
// 等同于
double x 123.456e3;上面示例中e后面如果是加号加号可以省略。
注意科学计数法里面e的前后不能存在空格。
另外科学计数法的小数部分如果是0.x或x.0的形式那么0可以省略。
0.3E6
// 等同于
.3E63.0E6
// 等同于
3.E6