【C 语言】double 关键字
🚩write in front🚩
🔎大家好,我是謓泽,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎
🏅2021 年度博客之星物联网与嵌入式开发 TOP5~2021 博客之星 Top100~阿里云专家博主 & 阿里云星级博主~掘金⇿InfoQ~51CTOP 创作者(创作新人榜 No.10)~[CSDN]周榜 334﹣总榜 925 ⇿ 全网访问量 40w+🏅
🆔本文由 謓泽 原创 发布在 InfoQ 如需转载还请通知⚠
📝个人主页-InfoQ - 促进软件开发及相关领域知识与创新的传播-极客邦
🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝
✉️我们并非登上我们所选择的舞台,演出并非我们所选择的剧本📩
⑨ double ⇿ 双精度浮点型
⒈描述⇢双精度浮点类型的使用关键字是 double,它在内存中占用的是⑧个字节。
⒉作用⇢定义一个双精度类型变量,然后其赋值浮点型数字,最后通过输出语句将其显示打印输出在控制台上。
⒊注意⇢double 类型在程序默认输出⑥位小数点,有效数字是 6~7,格式符为 %lf 的。
代码示例如下①👇
运行结果🖊
双精度浮点型 = 3.14159
📝拓展知识点如下👇
%f 以十进制形式输出 float 类型;
%lf 以十进制形式输出 double 类型;
%e 以指数形式输出 float 类型,输出结果中的 e 小写;
%E 以指数形式输出 float 类型,输出结果中的 E 大写;
%le 以指数形式输出 double 类型,输出结果中的 e 小写;
%lE 以指数形式输出 double 类型,输出结果中的 E 大写。
代码示例如下②👇
运行结果🖊
双精度浮点类型 = 3.24359223...(以及小数点后面 32 位的 0)
🍏注⇢.40 代表的是后续的小数点的数字保留多少位的数字。
🍊遗留问题→浮点数的内容精度损失。
(ง •_•)ง问题-此时细心的张三同学在它的编译器发现了一个问题。
说明-在上述的代码当中张三同学发现在后面的小数点 32 位,原本都应该是数字 0 的。结果出现了一个数字是 1 的。
说明⇢一开始张三同学还以为他看错了,结果看了几遍都发现自己并没有看错。謓泽这个是怎么回事呢?明明在实际的值当中并没有出现过 1 的这个数字阿,按理来说不会这也阿。
解答-张三同学你发现的这个问题我们就把它称之为四字『精度损失』。从理论的角度上来说它打印出来的值因该是全 0 的数字的,那么想要知道为什么是这个样子的我们就需要了解一个概念就是数据的存储。数据存储这里就不详细的介绍了,在博主的[C 系列]有篇文章当中有并且讲的非常的详细。如果你对这个不了解的话可以去康康(●'◡'●)
🍈专业词汇解释精度损失⇢在上述的拓展当中我们提到过精度损失,接下来我们用代码来讲述下倒不如说是证明下这精度损失到底是不是为真正是浮点数类型为精度损失了。
运行结果🖊
x = 1.00000000000000000000
y = 0.00000000000000001111
Yes 精度损失
①结论⇢浮点数在进行比较的时候,绝对不能直接使用==号来进行比较。
②因为⇢浮点数本身就是存在着精度损失,从而导致最终结果有细微的差别的。
版权声明: 本文为 InfoQ 作者【謓泽】的原创文章。
原文链接:【http://xie.infoq.cn/article/db9bc8560428755770eec6d9d】。文章转载请联系作者。
评论