实型
#include <iostream>
#include <cfloat>
#include <iomanip> //保留小数点
using namespace std;
/*
三种类型实数
float
double
long double
3.0为double类型;
3.0f为float类型;
3.1e3 科学计数法表示
3.1e+3
3.1e-3
注:小数不加f默认为double类型,加了f才是float类型
*/
int main() {
/*
一、float 类型
单精度
4字节
数值表达范围:1.17549e-38 ~ 3.40282e+38
有一位符号位,可表示正负,最小负数为 -3.40282e+38
*/
float fa = 3.0; //3.0默认是一个double双精度类型,在这里系统做了一个自动转换,把双精度转成了单精度
float fa1 = 3.0f; //+f 表示一个单精度类型的数
float fa2 = 3.1f;
float fa3 = -3.1f;
float fa4 = 3; //把一个整数赋值给float
float fa5 = 3.1e3; //科学计数法表示 e+3, e3, e-3 表示10的几次方
float fa6 = 3.1e+3;
float fa7 = 3.1e-3;
float fa8 = 3.123456789; //只能表示7个有效数位
cout<<FLT_MIN<<endl;
cout<<FLT_MAX<<endl;
cout<<fa<<endl;
cout<<fa1<<endl;
cout<<fa2<<endl;
cout<<fa3<<endl;
cout<<fa4<<endl;
cout<<fa5<<endl;
cout<<fa6<<endl;
cout<<fa7<<endl;
cout<<fa8<<endl; //默认输出7个有效数位
cout<<fixed<<setprecision(8)<<fa8<<endl; //但只有7位有效
cout<<endl;
/*
输出:
1.17549e-38
3.40282e+38
3
3
3.1
-3.1
3
3100
3100
0.0031
3.12346
3.12345672
*/
/*
二、double 类型
双精度
8字节
数值表达范围:2.22507e-308 ~ 1.79769e+308
有一位符号位,可表示正负,最小负数为 -1.79769e+308
*/
double da = 3.0;
double da1 = 3; //把整数赋值给double
double da2 = -3;
double da3 = 3.123456789123456789;
cout<<DBL_MIN<<endl;
cout<<DBL_MAX<<endl;
cout<<da<<endl;
cout<<da1<<endl;
cout<<da2<<endl;
cout<<da3<<endl;
cout<<fixed<<setprecision(18)<<da3<<endl; //但只有17位有效
cout<<endl;
/*
输出:
2.22507e-308
1.79769e+308
3
3
-3
3.12346
3.123456789123456812
*/
/*
三、long double
长双精度类型
16字节
表达范围:3.3621e-4932 ~ 1.18973e+4932
不常用
*/
long double lda = 3.0;
long double lda1 = 3.0;
cout<<LDBL_MIN<<endl;
cout<<LDBL_MAX<<endl;
cout<<lda<<endl;
cout<<lda1<<endl;
cout<<sizeof(long double)<<endl;
/*
输出:
3.3621e-4932
1.18973e+4932
3
3
16
*/
return 0;
}