§2.3 实型(浮点型)
作用:用于表示小数。
实型之所以被称为浮点型,是因为它在计算机的存储单元中以浮点表示法存储表示。浮点表示法把一个实数表示成类似于科学计数法的形式——1.m x bⁿ的形式(规格化形式),其中m称为尾数,n称为阶码,b则是该进制对应的基数(例如十进制数为10)。
浮点型在具体实现时,从所分配的存储单元中分出两个部分,它们分别于存储尾数和阶码。其中尾数采用定点小数形式表示,而阶码采用定点整数形式表示。
存储格式:从左至右依次为1位符号位、8位阶码位、23位尾数位。
其中,**在符号位0表示正1表示负。**阶码本身有正有负,根据8位的长度计算其范围为-126~127。但为了便于比较,一般会把阶码都表示为(无符号)正数,对应0至255,即n+127。这种表示方法称其为“移码”。So,看到阶码值应当减去127,才能获得它的真实值。
§2.3.1 实型的分类
浮点型变量分为两种,两者的区别在于表示的有效数字范围不同:
(1)单精度float:
空间占用4字节,有效数字范围7位;
(2)双精度double:
空间占用8字节,有效数字范围15~16位。
注:小数点之前的整数部分,也被算作有效数字。
例如数字3.14,有效数字为3位。
§2.3.2 重难点解释
通常在单精度的数字之后加上小写字母“f”。
(1)编辑器通常会默认一个小数为双精度;
(2)若用“float”去接收它(在数字前用“float”定义),则会将该数转换成单精度(若未在数字之后加小写字母“f”,则会有此“双精度转单精度”的过程)
(3)直接在数字之后加小写字母“f”则直接定义为单精度;
(4)在C++中,默认最多表示6位有效数字。若想查看更多有效数字,需要做额外的配置(emmm这是超纲内容。。。。)
§2.3.3 代码演示
参考代码如图示:
#include<iostream>
using namespace std;
int main() {
//1.单精度float
//2.双精度double
//默认情况下,在C++中输入一个小数,最多显示6位有效数字
float f1 = 3.1415926;
cout << "f1=" << f1 << endl;
double d2 = 3.1415926;
cout << "d2=" << d2 << endl;
//统计“float”与“double”占用的内存空间
cout << "float占用的内存空间:" << sizeof(float) << "字节" << endl;
cout << "double占用的内存空间:" << sizeof(double) << "字节" << endl;
system("pause");
return 0;
}
运行效果如图示: