小数的表示形式

  • 小数可以是由.分割表示 -> 66.66
  • 也可以用指数形式表示:

    aEn 或 aen
    a 为尾数部分,是一个十进制数;n 为指数部分,是一个十进制整数;E或e是固定的字符,用于分割尾数部分和指数部分。整个表达式等价于 a×10^n。
    2.1E5 = 2.1×10^5,其中 2.1 是尾数,5 是指数。

    小数的类型

  • float 单精度浮点型

    • 长度始终占用4个字节
  • double 双精度浮点型
    • 长度始终占用8个字节

      一般来说,CPU处理单精度浮点数的速度比处理双精度浮点数快

小数的输出方式

  • %f 以十进制形式输出 float 类型;
  • %lf 以十进制形式输出 double 类型;
  • %e 以指数形式输出 float 类型,输出结果中的 e 小写;
  • %E 以指数形式输出 float 类型,输出结果中的 E 大写;
  • %le 以指数形式输出 double 类型,输出结果中的 e 小写;
  • %lE 以指数形式输出 double 类型,输出结果中的 E 大写。
  • %g 更加智能的输出方式。%g 会对比小数的十进制形式和指数形式,以最短的方式来输出小数,让输出结果更加简练。所谓最短,就是输出结果占用最少的字符。

    %f 和 %lf 默认保留六位小数,不足六位以 0 补齐,超过六位按四舍五入截断。 %f 和 %e 默认保留六位小数,只包括小数部分 %g 默认最多保留六位有效数字,包括整数部分和小数部分,不会在最后强加 0 来凑够有效数字的位数

数字的后缀

一个数字,是有默认类型的:对于整数,默认是 int 类型;对于小数,默认是 double 类型
将一个整数100赋值给long 必须先从 int 类型转换为 long 类型
52.55 和 18.6 这两个数字默认都是 double 类型的,将 52.55 赋值给 float,必须先从 double 类型转换为 float 类型
如果不想让数字使用默认的类型,那么可以给数字加上后缀,手动指明类型

  • 在整数后面紧跟 l 或者 L(不区分大小写)表明该数字是 long 类型;
  • 在小数后面紧跟 f 或者 F(不区分大小写)表明该数字是 float 类型。

    小数和整数相互赋值

    在C语言中,整数和小数之间可以相互赋值:

  • 将一个整数赋值给小数类型,在小数点后面加 0 就可以,加几个都无所谓。

  • 将一个小数赋值给整数类型,就得把小数部分丢掉,只能取整数部分,这会改变数字本来的值。注意是直接丢掉小数部分,而不是按照四舍五入取近似值。