C++心得笔记
C++ Primer Plus 第三章 处理数据
3.3 浮点数
使用浮点数型可以表示诸如 2.5、3.14159和122442.32这样的数字,即带小数部分的数字。计算机将这样的值分为两部分存储。一部分表示值,另一部分用于对值进行放大或缩小。
打个比方: 对于数字34.1245和34124.5,它们除了小数点的位置不同外,其他都是相同的。可以把第一个数表示为0.341245(基准值)和100(缩放因子),而将第二个数表示为0.341245(基准值都相同)和10000(缩放因子更大)。
缩放因子的作用是移动小数点的位置,术语浮点因此而得名。 C++内部表示浮点数的方法于此相同,只不过它基于的是二进制数,因此缩放因子是2的幂,不是10的幂。
3.3.1 书写浮点数
C++有两种书写浮点数的方式。
第一种是使用常用的标准小数点表示法:
12.34 // floating-point
0.00023 // floating-point
8.0 // still floating-point (即使小数部分为0(如8.0),小数点也将确保该数字以浮点格式(而不是整数格式)表示。)
第二种表示浮点值的方法叫作 E表示法 ,其外观像这样的:3.45E6,这指的是3.45与1000000相乘的结果;E6指的是10的6次方,即1后面6个零。(数字中不能有空格)
例:
2.52e+8 // + is optional
8.33E-4
7E5
-18.32e13
3.3.2 浮点类型
和ANSI C一样,C++也有3种浮点类型:float、double和long double。这些类型是按它们可以表示的有效数位和允许的指数最小范围来描述的。有效位值得是数字中有意义的位。
事实上,C和C++对于有效位数的要求是,float至少32位,double至少48位,且不少于float, long double 至少和double一样多。这三种类型的有效位数可以一样多。
下面程序演示了float和double类型及它们表示数字时在精度方面的差异(即有效位数)。
该程序预览了ostream方法srtf(),这种调用迫使输出使用定点表示法,以便更好地了解精度,防止程序把较大的值切换为E表示法,并使程序显示到小数点后6位。
程序输出: