5_C 语言中的浮点数

C 语言中的浮点数

一般就是两种浮点数, 一个 float 单精度浮点数, 一个 double 双精度浮点数

它具体的类型转换有下面这些原则

  • 类型转换

    • 当 int (32 位宽), float, 与 double 等类型间进行转换时, 基本的原则如下 :
    1. double 或者 float 转换成 int 时, 小数点后面直接截断; 如果发生溢出或者浮点数不是数 (NaN) 的话, 那这个转换结果没有定义, 看具体的 C 编译器的实现了

    2. int 转换为 double 的话, 能够精确转换, 因为 int 的有效数字宽度是 32 位, double 这个双精度浮点数有效数据宽度大于 32 位, 所以这种转换不会出问题

    3. int 转换为 float 时, int 是 32 位, float 有效数据只有 23 位, float 的表示范围远远大于 int 的表示范围, 但是它们有效数据位数不一样, 注意这两个概念, 一个是表示范围, 一个是表示精度. 那么这种情况下, 不会溢出, 但是有可能被舍入.