1. 实型(实数型/浮点型) #
简单来说,实型就是:1.1、-17.2、88.8、666.66、…
C++ 中,用 float 和 double 来表示。
变量的基本操作:
#include <iostream> // 使用头文件 using namespace std; // 使用名称空间 std int main() { float a; // 声明一个实型变量 a = 88.8;// 赋值(存放数值 88.8 到变量 a 中) double b(8.88);// 初始化为 8.88 cout << "实型变量 a 的值是:" << a << endl; cout << "实型变量 b 的值是:" << b << endl; return 0; }
1.1 不同大小的实型 #
什么是 float 和 double ?
和整型一样,float 和 double 是不同存储大小的实型类型。
它们的大小关系为:float < double
1.2 变量的基本操作 #
请看示例程序:
#include <iostream> // 使用头文件
using namespace std; int main() { float a_float; // 声明一个 float 变量 double a_double; // 声明一个 double 变量 a_float = 18.6f; // 赋值,float,f 表示这是 float 类型的数。小数数值,默认是 double 类型的。 a_double = 56.5; // 赋值,double a_float = -18.6f; // 赋值,float ,可以是负数 a_double = -56.5; // 赋值,double,可以是负数 cout << "float value = " << a_float << endl; cout << "double value = " << a_double << endl; return 0; }
注意:实型,都是有符号的。不存在 unsigned float 这样的写法。
1.3 不同实型的表示范围 #
类型名称 | float | double | long double |
所占字节数 | 4 | 8 | 16 |
表示范围 | -3.4E+38~3.4E+38 | -1.7E+308~1.7E+308 | -3.4E4932~3.4E4932 |
1.4 含有实型的运算(加、减、乘) #
这里,主要是指 含有小数 的运算情况。比如:
5 + 8.6
5 – 8.6
5 * 8.6
#include <iostream> // 使用头文件 using namespace std; // 使用名称空间 std int main() { int a (2021); double b(3.14); float c (2.17f); // f 表示,这是一个 float 类型的小数 cout << "a * b = " << a * b << endl; // 直接输出结果 double result1 = a * b; // 注意:计算的结果是一个 double 类型的小数,这也符合数学规则。 float result2 = a * c; // 注意:计算的结果是一个 float 类型的小数 return 0; }
请注意,含有实型的运算结果,也是一个实型(这里主要是指:小数参与运算的情况)。
1.5 小数参与的除法 #
请运行下面代码:
#include <iostream> // 使用头文件 using namespace std; // 使用名称空间 std int main() { double a (10.5); double result_0 = a / 3.14; // 除法,用 / 表示 cout << "result = " << result_0 << endl; int b (10); double result_1 = b / 3.14; // 除法,用 / 表示 cout << "result = " << result_1 << endl; int c (50); float result_2 = c / 3.14f; // 除法,用 / 表示 cout << "result = " << result_2 << endl; return 0; }
含有 实型(主要指小数) 的运算结果,也是一个 实型(主要指小数)
1.6 保留小数 #
在数学中,有许许多多的常数,例如圆周率(π)、自然常数(e)、黄金分割数,它们往往都是无限不循环小数,以圆周率为例,π = 3.1415926535897932…,在使用时,我们往往只保留小数点后前几位,那么在C++中,我们怎么保留小数呢?
double pi = 3.1415926535897932; // 保留5位小数
这里我们要引用一个新的头文件:iomanip
iomanip 库里的setprecision(),它的作用是设置浮点数的有效数位。
#include <iostream> // 使用头文件 #include <iomanip> // 使用头文件 iomanip using namespace std; // 使用名称空间 std int main() { double pi = 3.1415926535897932; cout << fixed << setprecision(5) << pi <<endl; // 保留5位小数 return 0; }
请运行下列代码:
#include <iostream> // 使用头文件 #include <iomanip> // 使用头文件 iomanip using namespace std; // 使用名称空间 std int main() { double a = 1234.123456; cout << setprecision(3) << a <<endl; cout << fixed << setprecision(3) << a <<endl; return 0; }
发现有什么区别吗?
没有fixed:从整数数位开始计算,结果会以科学计数法来表示。
有fixed:从小数点后的位数开始计算,即保留小数。
注意:
输出语句顺序为 fixed << setprecision(位数) << 变量名。