在平时生活中除了整数,我们还经常会用到小数,在C++中小数类型又叫做实数类型和浮点数类型
在C++中浮点数类型分为两种,float和double,前面一种为单精度,后面一种为双精度,此二者的区别在于可以计算的数据的大小范围,正常情况下double能够处理的数据相对更多,但是占用的内存空间更大,读者可以依据自身需求进行选择。
刚刚了解了实数的数据类型,但是如果我们将浮点型的数字赋值给整型就会出现精度的丢失,如图
#include <iostream>
using namespace std;
int main(){
double a = 1.3;
int b = a;
cout << a << endl;
cout << b << endl;
return 0;
}
在上图中,将float类型的a进行输出时,显示的结果为小数,但是将a的值赋值给int类型的b时,b里面存储的值变为1
这说明当小数转化为整数的时候,编译器会自动将类型进行转换,在这个例子中,实数被转换为了整数,如果我们再使用这个整数就会造成数据产生丢失,对最后的结果造成影响。因此,在编写程序时要时刻注意精度丢失的问题(除非这种精度丢失就是自己想要的效果)。
当然,如果时将int类型的数据转换为float类型,那么编译器会自动在整数后面添加上小数点和0以保证其大小不变。
除了以上例子,若是出现1+1.2这种情况,编译器就会自动将数据范围相对较小的1转换为浮点型进行计算,再将最后的结果转换为1.2的类型即浮点型进行赋值