双精度浮点数double

c++ 专栏收录该内容
9 篇文章 0 订阅

double类型介绍

双精度浮点数(double)是计算机使用的一种数据类型。比起单精度浮点数,双精度浮点数(double)使用 64 位(8字节) 来存储一个浮点数。 它可以表示十进位制的15或16位有效数字。


sign bit(符号): 用来表示正负号
exponent(指数): 用来表示次方数
mantissa(尾数): 用来表示精确度

注意这里的尾数只有52位,实际上能够存储53位。这里面有一个规格化的过程。

为了最大限度提高精确度,可以要求尾数规范化,把尾数处理到大于等于1而小于2的区间内,便可省去前述的“1”。

例如11.101 x 21011 规范化为1.1101 x 21101 ,存储尾数只须存储1101即可。
所以能够精确表示的最大整数是253 -1(9007199254740991)

c语言double类型的输入输出

double a;
scanf("%f",&a);   //应用scanf("%lf",&a);

执行上面语句时,发现double类型的输入不能使用%f进行输入,得用%lf才能正常得到a的值。
而在输出double类型时却可以用%f,这是因为printf("%f",a);在执行时C自动将float型的参数转换成double型。

故double型的输入输出形式如下:

double a;
scanf("%lf",&a);
printf("%f",a);
printf("lf",a);//都可以

综上:

  1. 用 scanf() 函数输入 double 类型的变量时,转换说明中的转换字符(占位符)只能用 lf,即%lf,写成 %f 无法正确输入double型数据;
  2. 用 printf() 函数输出 double 类型的变量时,转换说明中的转换字符(占位符)可用%lf 或%f,皆能正确输出,且输出结果一致。
  3. 为简单与一致性起见,在对 double 类型的变量输入输出时,建议都用%lf 占位符。

参考:
https://en.wikipedia.org/wiki/Double-precision_floating-point_format
https://zh.wikipedia.org/wiki/雙精度浮點數
https://blog.csdn.net/u011415955/article/details/37322587
https://blog.csdn.net/clxjoseph/article/details/8731363

  • 6
    点赞
  • 0
    评论
  • 12
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

参与评论 您还未登录,请先 登录 后发表或查看评论
©️2022 CSDN 皮肤主题:像素格子 设计师:CSDN官方博客 返回首页

打赏作者

yrk0556

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值