现在的位置: 首页 > 综合 > 正文

C核心技术手册(二十一)

2017年09月05日 ⁄ 综合 ⁄ 共 979字 ⁄ 字号 评论关闭

3.2     浮点常量

浮点常量可被写为十进制或十六进制,在下面两个小节描述。

3.2.1    十进制浮点常量

  一个普通的浮点常量由一个十进制数字包含一个小数点的序列组成。在科学计数法中,你也可以给它的值乘以10的幂。10的幂可以使用指数表示,引入字母eE,一个包含指数的浮点常量不需要包含小数点,Table 3-2给出了一些十进制浮点常量的例子。

Table 3-2. Examples of decimal floating-point constants

浮点常量

10.0

10

2.34E5

2.34 x 105

67e-12

67.0 x 10-12

 

小数点可能是第一个或最后一个字符,因此,10..234E5都允许使用的数,然而,不带小数点的数字10将是一个整型常量,而非浮点型常量。

浮点常量的默认类型为double,你也可以通过增加前缀Ff指定一个常量为float,或者使用前缀Ll使常量的类型为long long,如下例子所示:

  Float f_var = 123.456F; //初始化

  Long double ld_var = f_var * 987E7L;

 

3.2.2    十六进制浮点常量(C99)

  C99标准引入了十六进制浮点常量,与十进制浮点数相比它具有一个关键的优势,如果你使用十六进制来指定一个常量的值,在计算机中它将精确地以二进制浮点格式存储,没有误差。

  十六进制浮点常量包含前缀0x0X, 及一个十六进制数字序列并带有一个可选的小数点(在此场景下,我们应该称它为十六进制小数点),和一个2的指数,其中指数是一个十进制数,使用字母pP表示。例如,常量0xa.fP-10与十进制数(10 + 15/16) x 2-10 (not 2-16)相等,还有如下一些等价的表示方法,0xA.Fp-10, 0x5.78p-9, 0xAFp-14 0x.02B3p0

  在十六进制浮点常量中,必须包含一个指数,即使它的值为0,这一步是为了区分前缀F(在指数后)和十六进制数字F(在指数左边),例如,如果指数没有被要求,常量0x1.0F可能被解释为float型的1.0,也可能被解释为double类型的1+15/256

  与十进制浮点数类似,十六进制浮点数也具有默认的类型double,增加一个前缀fF使用一个常量的类型变为float,或者使用前缀lL使常量类型变为long double

抱歉!评论已关闭.