实型(浮点型)

作用:实型, 即浮点型,用于表示小数

浮点型变量分为以下两种:
  单精度(float)
  双精度(double)

  两者区别在于表示的有效数字范围不同, 比如:数字3.14, 它的有效数字为3,1,4, 即有效数字是3位

数据类型 占用空间 有效数字范围
flat 4字节 7位有效数字
double 8字节 15~16位有效数字

单精度(float)

//定义float类型变量时,数值结尾处要追加一个字母f(f即float的第一个字母)
//如果没有f,则编译器默认该数字为double类型,用8个字节空间来存放数字,然后将double转成float,这样精度可能会有损失
//如果有f,则编译器会用4个字节空间来存放数字,强制表示为float
float f1 = 3.14f; //f1为float类型
float f2 = 3.14; //3.14被默认为是double类型,并最后强制转换为float类型
sizeof(f1);  //返回4
sizeof(f2);  //返回4, 存储空间不会因为小数后面没有f而变成8,存储空间只跟类型有关

为什么定义float类型变量,数字后面要追加f
  不加f,数字会被默认为double类型,从double类型转成float类型是高精度转换为低精度,因此会出警告
  当数值较小时,是没有问题的,不会出现数据丢失的情况
  当数值较大时,由于是高精度转向低精度,就可能会出现数据丢失的情况

双精度(double)

//定义double类型变量时,数值结尾处无需额外追加字母,当小数结尾没有任何字母,则编译器默认其为double类型
double d1 = 3.14;  //不需要额外加d
sizeof(d1); //返回8

默认显示小数位数

  float和double在默认情况下,都只显示6位有效数字

float f3 = 3.1415926f; //只返回3.14159,只显示6位
double d1 = 3.1415926; //只返回3.14159,只显示6位

科学计数法

float f1 = 3e2; // 返回300,即3乘以10的2次方
float f2 = 3e-2;  //返回0.03,即3乘以0.1的2次方
原文地址:https://www.cnblogs.com/shiliye/p/13741309.html