1 书写浮点数的两种方式:1)标准小数点表示法,如8.0。2)E表示法,如2.13e+8,-18.31e2,9.1E-21。
2 浮点类型三种:float、double、long double。在float.h文件中有FLT_DIG(float有效位的最小值)、FLT_MANT_DIG(含小数点的尾数的比特位数)、FLT_MAX_10_EXP(指数的最大值、FLT_MIN_10_EXP(指数的最小值)等符号常量。FLT可用DBL、LDBL代替分别表示double和long double的。
#include <iostream>
# include <cfloat>
int main()
{
using namespace std;
cout<<DBL_DIG<<" "<<FLT_DIG<<" "<<LDBL_DIG<<endl;
cout.setf(ios_base::fixed,ios_base::floatfield) ;// 使输出使用顶点表示法
float t = 1.0/3.0;
float u = t*10e7;
double y = 10.0/3.0;
double z = y*10e15;
cout<<t<<" "<<u<<endl;
cout<<y<<" "<<z<<endl;
}
程序运行结果:
,可看出u的有效位有7位,z的有效位有15位。
3. 浮点常量 使用浮点常量时,默认为double类型,希望常量是float类型,请使用f和F后缀,希望常量为long double类型,使用l或L后缀。
4 c++算数运算符 有+、-、*、/、% ,c++通过运算符的优先级和结合性来确定计算顺序。如果除法中只要有一个操作数为浮点数,则小数部分保留。
5 类型转化 1)初始化和赋值时进行的转换,会出现的问题有:将较大浮点型转换较小浮点型会缺失精度;将浮点型转换整型会丢失小数部分;较大整型转换为较小整型可能会超出取值范围,通常会复制右侧字节。2)大括号的初始化称为列表初始化,它的类型无法表示赋给他的值,如char a {65536};不允许。在不同的整型之间转换或将整型转换为浮点型可能被允许,条件是编译器知道目标变量能够正确地存储给它的值。3)表达式中的转换,c++将bool、char、unsigned char、signed char和short值自动转换为int计算,这些转换称为整数提升。浮点数级别从高到低:long double、double、float,只要有一个浮点数操作数,则向浮点数级别高的转换。
6 强制类型转换 如(int) a或int (a)格式,后者是纯粹的c++,它像函数调用。c++还有4个强制转换运算符,如static_cast<>可将值从一种数值类型转换为另一种数值类型。
7 auto声明:让编译器能够根据初始值的类型推断变量的类型。