《C++ Primer Plus》笔记
C++有3种浮点类型:float(4字节)、double(8字节)和long double(16字节)。这些类型是按它们可以表示的有效位数和允许的指数最小范围来描述的。有效位(significant figure)是数字中有意义的位。
C和C++对于大小的要求是float至少32位,double至少48位,且不少于float,long double至少和double一样多。这三种类型的有效位数可以一样多。然而,通常,float为32位,double为64位,long double为80、96或128位。
浮点常量:
在程序中书写浮点常量的时候,程序将把它存储为哪种浮点类型呢?在默认情况下,像8.24和2.4E8这样的浮点常量类型都属于double类型。如果希望常量是float类型,请使用f或F后缀。对于long double类型,可使用l或L后缀。
浮点数的优缺点:
与整数相比,浮点数有两大优点。首先,它们可以表示整数之间的值。其次,由于有缩放因子,它们可以表示的范围大得多。另一方面,浮点运算的速度通常比整数运算慢,且精度将降低。
例如:
float a =2.34E+22f;
float b = a + 1.0f;
cout << "a = " << a << endl;
cout << "b - a = " << b - a endl;
结果为:
a = 2.3e+022
b - a = 0
问题在于,2.34E+22是一个小数点左边有23位的数字。加上1,就是在第23位加1。但float类型只能表示数字中的前6位或前7位,因此修改第23位对这个值不会有任何影响。
将类型分类:
C++对基本类型进行了分类,形成了若干个族。类型signed char、short、int和long统称为符号整型;它们的无符号版本统称为无符号整型;C++11新增了long long、bool、char、wchar_t、符号整数和无符号整数统称为整型;C++11新增了char16_t和char32_t。float、double和long double统称为浮点型。整数和浮点型统称算术类型。