前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >C语言中浮点数据类型(你学废了吗)

C语言中浮点数据类型(你学废了吗)

作者头像
鱼找水需要时间
发布2023-02-16 19:12:40
发布2023-02-16 19:12:40
51800
代码可运行
举报
文章被收录于专栏:SpringBoot教程SpringBoot教程
运行总次数:0
代码可运行

1. 处理带小数的数值

类似于1.234567,0.00001,这类非整数的数据。int能不能装这些数据?

代码语言:javascript
代码运行次数:0
复制
#include <stdio.h>

int main() {
    int a = 1.234567;
    int b = 0.00001;
    int c = 365.12345;
    printf("%d\n", a); 
    printf("%d\n", b);
    printf("%d\n", c);
    return 0;
}

小数部分都丢失了,这时候就需要引入新的类型了——浮点类型。

2. 浮点类型:float

把代码中的整型 int ,用单精度浮点型 float 替代。之后,再将 printf("%d\n",a); 中的占位符是 %d ,所以我们用 %f 替换。( %d 占位符用于整型, %f占位符用于浮点型)

代码语言:javascript
代码运行次数:0
复制
#include <stdio.h>

int main() {
    float a = 1.234567;
    float b = 0.00001;
    float c = 365.12345;
    printf("%f\n", a);
    printf("%f\n", b);
    printf("%f\n", c);
    return 0;
}

将 int 替换成 float 之后,大部分的数据都是正确的。但是 365.12345 变成了 365.123444 ,很明显精度出现了误差。 这是因为,浮点数并不能表示无限的精确,它会存在着一定的误差。

C标准规定,float类型必须至少能表示6位有效数字,并且取值范围至少是10^-37~10+37。

所以,使用float来装365.12345时,前面六位数值是准确的,但是后面的数值略有误差。

3. 浮点类型:double

double叫做双精度浮点型,是比float精度更高的类型。把上面代码中的 float 换成 double

printf函数 中使用的占位符不需要修改,floatdouble均可以使用 %f 来作为占位符。

代码语言:javascript
代码运行次数:0
复制
#include <stdio.h>

int main() {
   double a = 1.234567;
   double b = 0.00001;
   double c = 365.12345;
   printf("%f\n", a);
   printf("%f\n", b);
   printf("%f\n", c);
   return 0;
}

这次 365.12345 也是正确的了。

注意: double 类型也是有精度范围的。如果是更高精度的数据, double 也会出现误差。

日常的应用中,不会苛求一个精度完美的数值,是会允许存在一定误差范围的。但是,如果涉及高精度领域的计算时,需要额外使用特殊的方法进行数值计算,以尽量减少误差。

4. 浮点类型所占字节大小

之前对整型的经验,越大范围的整型类型所占的空间越大。 那么对于浮点类型来说,越高精度、越大范围的浮点类型,应该也会占用越大的空间。

sizeof来测量一下floatdouble分别占用多大的空间。

代码语言:javascript
代码运行次数:0
复制
#include <stdio.h>

int main() {
    printf("sizeof float = %d\n", sizeof(float)); 
    printf("sizeof double = %d\n", sizeof(double));
    return 0;
}

float , double 分别为4,8个字节。证明:对于越大范围,越高精度的类型所占空间越大。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-07-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 处理带小数的数值
  • 2. 浮点类型:float
  • 3. 浮点类型:double
  • 4. 浮点类型所占字节大小
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档