当前位置: 首页 > news >正文

【C语言】double 关键字

🚩write in front🚩   

🔎大家好,我是謓泽,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎
🏅2021年度博客之星物联网与嵌入式开发TOP5~2021博客之星Top100~阿里云专家博主 & 星级博主~掘金⇿InfoQ~51CTOP创作者~周榜109﹣总榜883⇿全网访问量30w+🏅
🆔本文由 謓泽 原创 CSDN首发🙉如需转载还请通知⚠
📝个人主页-謓泽的博客_CSDN博客 📃
🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝​
📣系列专栏-【C语言】关键字_謓泽的博客-CSDN博客🎓
✉️我们并非登上我们所选择的舞台,演出并非我们所选择的剧本📩

⑨ double ⇿ 双精度浮点型

⒈描述⇢双精度浮点类型的使用关键字是 double,它在内存中占用的是⑧个字节。

⒉作用⇢定义一个双精度类型变量,然后其赋值浮点型数字,最后通过输出语句将其显示打印输出在控制台上。

⒊注意⇢double 类型在程序默认输出⑥位小数点,有效数字是6~7,格式符为 %lf 的。

代码示例如下①👇

#include<stdio.h>
int main(void)
{
    double a = 3.14159;
    printf("双精度浮点型 = %lf\n",a);
    return 0;
}

运行结果🖊 

双精度浮点型 = 3.14159 

📝拓展知识点如下👇

  1. %f 以十进制形式输出 float 类型;
  2. %lf 以十进制形式输出 double 类型;
  3. %e 以指数形式输出 float 类型,输出结果中的 e 小写;
  4. %E 以指数形式输出 float 类型,输出结果中的 E 大写;
  5. %le 以指数形式输出 double 类型,输出结果中的 e 小写;
  6. %lE 以指数形式输出 double 类型,输出结果中的 E 大写。

代码示例如下②👇

#include<stdio.h>
int main(void)
{
	double a = 3.24359223;
	printf("双精度浮点型 = %.40lf\n", a);
	return 0;
}

运行结果🖊

双精度浮点类型 = 3.24359223...(以及小数点后面32位的0)

🍏注⇢.40代表的是后续的小数点的数字保留多少位的数字。

🍊遗留问题→浮点数的内容精度损失。

(ง •_•)ง问题-此时细心的张三同学在它的编译器发现了一个问题。

说明-在上述的代码当中张三同学发现在后面的小数点32位,原本都应该是数字0的。结果出现了一个数字是1的。

3.2435922300000000000000000000000000000001

一开始张三同学还以为他看错了,结果看了几遍都发现自己并没有看错。謓泽这个是怎么回事呢?明明在实际的值当中并没有出现过1的这个数字阿,按理来说不会这也阿。

解答-张三同学你发现的这个问题我们就把它称之为四字精度损失。从理论的角度上来说它打印出来的值因该是全0的数字的,那么想要知道为什么是这个样子的我们就需要了解一个概念就是数据的存储。数据存储这里就不详细的介绍了,在博主的[C系列]有篇文章当中有并且讲的非常的详细。如果你对这个不了解的话可以去康康(●'◡'●)

🍈专业词汇解释精度损失⇢上述的拓展当中我们提到过精度损失,接下来我们用代码来讲述下倒不如说是证明下这精度损失到底是不是为真正是浮点数类型为精度损失了。

#include <stdio.h>
int main(void)
{
	double x = 1.0;
	double y = 0.1;
	printf("x=%.20lf\n", x);
	printf("y=%.20lf\n", y);
	if ((x - 0.9) == 0.1)
		printf("No精度损失\n");
	else
		printf("Yes精度损失\n");
	return 0;
}

运行结果🖊

x = 1.00000000000000000000

y = 1.00000000000000001000

Yes精度损失

①结论⇢浮点数在进行比较的时候,绝对不能直接使用==号来进行比较。

②因为⇢浮点数本身就是存在着精度损失,从而导致最终结果有细微的差别的。

相关文章:

  • 【项目实战开发】第三章——在线生鲜商城系统
  • 论如何参与一个开源项目(中)
  • java中对jvm参数的调整进行调优
  • MySQL并发事务访问相同记录
  • 利用UART串口实现数据的收发
  • 虚幻引擎5 C++游戏开发教程
  • 【GNN报告】GNN可解释性 基于几何与拓扑特性的图学习
  • Hadoop3 - HDFS 介绍及 Shell Cli 操作
  • Java~数据结构(三)~栈和队列(Stack\Queue\Deque的常用方法和模拟实现一个栈和队列等)
  • 股票API下单接口是怎样传入交易数据的?
  • 【C++初阶】C++入门篇(二)
  • 点云LAS格式分析
  • 关于我的家乡html网页设计完整版,10个以家乡为主题的网页设计与实现
  • 有营养的算法笔记(二)
  • 10.5 - 每日一题 - 408
  • 【node学习】协程
  • Python学习之路13-记分
  • Shell编程
  • vue-cli在webpack的配置文件探究
  • win10下安装mysql5.7
  • 服务器从安装到部署全过程(二)
  • 复杂数据处理
  • 记录一下第一次使用npm
  • 如何正确配置 Ubuntu 14.04 服务器?
  • 腾讯视频格式如何转换成mp4 将下载的qlv文件转换成mp4的方法
  • 微信小程序--------语音识别(前端自己也能玩)
  • 限制Java线程池运行线程以及等待线程数量的策略
  • 一个完整Java Web项目背后的密码
  • kubernetes资源对象--ingress
  • #if和#ifdef区别
  • #绘制圆心_R语言——绘制一个诚意满满的圆 祝你2021圆圆满满
  • $refs 、$nextTic、动态组件、name的使用
  • (Mac上)使用Python进行matplotlib 画图时,中文显示不出来
  • (Redis使用系列) SpirngBoot中关于Redis的值的各种方式的存储与取出 三
  • (zhuan) 一些RL的文献(及笔记)
  • (ZT)一个美国文科博士的YardLife
  • (初研) Sentence-embedding fine-tune notebook
  • (附源码)springboot太原学院贫困生申请管理系统 毕业设计 101517
  • (附源码)计算机毕业设计ssm基于Internet快递柜管理系统
  • (推荐)叮当——中文语音对话机器人
  • (转)Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案一
  • **CI中自动类加载的用法总结
  • .describe() python_Python-Win32com-Excel
  • .NET设计模式(7):创建型模式专题总结(Creational Pattern)
  • .NET文档生成工具ADB使用图文教程
  • .NET下的多线程编程—1-线程机制概述
  • /bin/bash^M: bad interpreter: No such file or directory
  • @德人合科技——天锐绿盾 | 图纸加密软件有哪些功能呢?
  • [Android]How to use FFmpeg to decode Android f...
  • [Big Data - Kafka] kafka学习笔记:知识点整理
  • [C++]C++入门--引用
  • [C++11 多线程同步] --- 条件变量的那些坑【条件变量信号丢失和条件变量虚假唤醒(spurious wakeup)】
  • [CDOJ 838]母仪天下 【线段树手速练习 15分钟内敲完算合格】
  • [Docker]五.Docker中Dockerfile详解
  • [EFI]Atermiter X99 Turbo D4 E5-2630v3电脑 Hackintosh 黑苹果efi引导文件