• 周六. 5月 3rd, 2025

C语言入门 — 浮点型变量float double

2月 11, 2020

浮点型分为两种float和double, float是单精度,double是双精度, 简单点就是double精度更高, 具体点就得看两种浮点型的位数,具体如下:

浮点型分为符号位, 指数位, 尾数位。

类型 符号位 指数位 尾数位
float 1位(第31位) 8位(第23-30位) 23位(第0-22位)
double 1位(第63位) 11位(第52-62位) 52位(第0-51位)

两种浮点型的主要区别是精度, 具体影响有多大,我们可以举个例子来进行对比,比如计算圆的周长,具体如下:

#include <stdio.h>

int main(void)
{
    float pi,r;                          //使用float定义 pi 和半径
    double pi2,r2;                       //使用double定义 pi 和半径
    pi = pi2 = 3.14;                     //给 pi 和 pi2 赋值
    r = r2 = 4;                          //给 r 和 r2 赋值
    printf("2*pi*r = %f\n",2*pi*r);      //计算 2 * pi * r 并打印结果
    printf("2*pi2*r2 = %f\n",2*pi2*r2);  //计算 2 * pi2 * r2并打印结果
    return 0;
}

运行结果如下:

2*pi*r = 25.120001
2*pi2*r2 = 25.120000

结果分析,使用float的变量,计算的结果为25.120001, 使用 double的变量计算结果为25.120000, 经过计算double的结果才是对的。 

所以在使用浮点型的时候,如果条件允许并且不知道计算精度时,尽量使用double型, 不然会出现无法预料的结果。