C语言入门系列:数据类型之浮点数

文章目录

  • 一,什么是浮点数
  • 二,C语言中的浮点数
    • 1,float
      • 1.1 float的声明
      • 1.2 float的存储格式
      • 1.3 float的精度和范围
    • 2,double
      • 2.1 double变量的声明
      • 2.2 double的存储格式
      • 2.3 double的精度和范围
      • 2.4 long double
    • 3,0.2 + 0.1 ≠ 0.3
    • 4,优先使用double
  • 三,C语言中的浮点数表示法

一,什么是浮点数

浮点数是计算机存储小数的一种方式,在C语言中,任何带小数点的数都被编译器解释为浮点数。

顾名思义,浮点数就是小数点可以浮动的数。

要了解浮点数,先回忆下科学计数法,数字3140,可以有如下多种表示方法:

在这里插入图片描述
这种表示方法中,小数点是可以移动的,称之为浮点数。

有没有小数点固定的定点数呢?理论上是有的,但是C语言标准中没有定点数的规定。

所以,浮点数是一种用计算机中用科学计数法表示小数的形式

所谓“浮点数”就是使用 m * bⁿ 的形式,存储一个数值:

  • m是小数部分
  • b是基数(通常是2)
  • n是指数部分

这种形式是精度和数值范围的一种结合,可以表示非常大或者非常小的数。

二,C语言中的浮点数

在C语言中存在单精度(single precision)和双精度(double precision)两种浮点数类型,分别对应于floatdouble数据类型。

  • 单精度浮点数(float:这是C语言中的一种基本浮点数类型,通常占用32位(4字节)存储空间。它可以表示大约6到7位十进制数的精度,数值范围大约从-3.40282347E+38到3.40282347E+38。

  • 双精度浮点数(double:这是C语言中另一种更广泛使用的浮点数类型,占用64位(8字节)存储空间。它提供了更高的精度,大约可以表示15到16位十进制数的精度,数值范围大约从-1.7976931348623157E+308到1.7976931348623157E+308。

1,float

1.1 float的声明

浮点数的类型声明使用float关键字,可以用来声明浮点数变量。

float c = 10.5;

上面示例中,变量c的就是浮点数类型。

1.2 float的存储格式

在C语言中,float类型的浮点数遵循IEEE 754标准,占用4个字节(32位),其由三部分构成:

  • 1位符号位(S):表示数的正负。
  • 8位指数位(E):使用偏置表示法存储指数,偏置值为127。
  • 23位尾数位(M):存储小数部分的实际二进制位,实际表示时假设在最前面有一个隐含的1(即尾数的精度实际上是24位)。

1.3 float的精度和范围

23位尾数位决定了float类型的精度,其能表示小数点后有6~7位小数的十进制数字。

float类型的指数范围为十进制的-38到38。

float类型数值范围用十进制表示,大约从-3.40282347E+383.40282347E+38

2,double

2.1 double变量的声明

双精度浮点数的类型声明使用double关键字,可以用来声明浮点数变量。

double c = 10.5;

上面示例中,变量c的就是浮点数double类型。

2.2 double的存储格式

在C语言中,double类型的浮点数遵循IEEE 754标准,占用8个字节(64位),其由三部分构成:

  • 1位符号位(S):表示数的正负。
  • 11位指数位(E):使用偏置表示法存储指数,偏置值为1023。
  • 52位尾数位(M):存储小数部分的实际二进制位,实际表示时假设在最前面有一个隐含的1(即尾数的精度实际上是53位)。

2.3 double的精度和范围

52尾数位决定了float类型的精度,其能表示小数点后有15~16位小数的十进制数字。

double类型的指数范围为十进制的-308到308。

double类型数值范围用十进制表示,大约从-1.7976931348623157E+3081.7976931348623157E+308

2.4 long double

C语言还提供了一个long double类型,其精度和范围依编译器而定,可能比double更高,通常占用16个字节,但并非所有系统上都有显著的差别。

3,0.2 + 0.1 ≠ 0.3

注意,由于存在精度限制,浮点数只是一个近似值,它的计算是不精确的,比如 C 语言里面0.1 + 0.2并不等于0.3,而是有一个很小的误差。

if (0.1 + 0.2 == 0.3) // false

在这里插入图片描述

关于这个问题更详细的解释,可以参考https://blog.csdn.net/epitomizelu/article/details/139115670

4,优先使用double

在实际编程中,选择使用float还是double取决于对精度的需求和存储空间的考虑。

double类型因其更高的精度而被推荐为默认的浮点数类型,除非有特别的内存限制或性能考虑。

三,C语言中的浮点数表示法

C 语言允许使用科学计数法表示浮点数,使用字母e来分隔小数部分和指数部分。

double x = 123.456e+3; // 123.456 x 10^3
// 等同于
double x = 123.456e3;

上面示例中,e后面如果是加号+,加号可以省略。

注意,科学计数法里面e的前后,不能存在空格。

另外,科学计数法的小数部分如果是0.x或x.0的形式,那么0可以省略。

0.3E6
// 等同于
.3E63.0E6
// 等同于
3.E6

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/29902.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

uni app 树状结构数据展示

树状数据展示&#xff0c;可以点击item 将点击数据给父组件 &#xff0c;满足自己需求。不喜勿喷&#xff0c;很简单可以根据自己需求改哈&#xff0c;不要问&#xff0c;点赞收藏就好 <template><view><view v-for"(node, index) in treeData" :ke…

Mellanoxnvidia ib高速网络常用命令总结

1.spci&#xff1a;检查本地的pci设备。示例&#xff1a;lspci| grep -i mell 2.ofed_info&#xff1a;检测ofed驱动版本。示例&#xff1a;ofed_info-s 3.ibstat&#xff1a;查看本机的ib网卡状态。 4.mst&#xff1a;mellnoax软件管理工具。用来生成IB设备描述符。提供给其他…

经典游戏案例:unity官方推荐3d跑酷

学习目标&#xff1a;实现跑酷核心算法 游戏画面 项目结构目录 部分核心代码 using System; using System.Collections; using System.Collections.Generic; using UnityEngine; /// <summary> /// 游戏管理器是一个状态机&#xff0c;根据当前的游戏状态&#xff0c;它…

图解Attention学习笔记

教程是来自https://github.com/datawhalechina/learn-nlp-with-transformers/blob/main/docs/ 图解Attention Attention出现的原因是&#xff1a;基于循环神经网络&#xff08;RNN&#xff09;一类的seq2seq模型&#xff0c;在处理长文本时遇到了挑战&#xff0c;而对长文本中…

华北水利水电大学-C程序设计作业

目录 基础题 1-1 分析 代码实现 1-2 分析 代码实现 1-3 分析 代码实现 1-4 ​编辑 分析 代码实现 1-5 分析 代码实现 1-6 分析 代码实现 基础题 1-1 从键盘输入10个学生的有关数据&#xff0c;然后把它们转存到磁盘文件上去。其中学生信息包括学号、姓名…

Redis变慢了?

Redis变慢了&#xff1f; 什么是Redis&#xff1f;测定Redis变慢&#xff1f;最大响应延迟平均响应延迟设置Redis慢日志 分析Redis变慢bigkeysbigkey的危害bigkey优化 写在最后 什么是Redis&#xff1f; 作为一个技术人员来说&#xff0c;大家用的最多的可能就是Redis了&#…

EMQX集群搭建

1. 什么是 MQTT&#xff1f; MQTT&#xff08;Message Queuing Telemetry Transport&#xff09;是一种轻量级、基于发布-订阅模式的消息传输协议&#xff0c;适用于资源受限的设备和低带宽、高延迟或不稳定的网络环境。它在物联网应用中广受欢迎&#xff0c;能够实现传感器、…

防火墙中的NAT

防火墙的NAT NAT分类 源NAT 基于源IP地址进行转换。 我们之前接触过的静态NAT&#xff0c;动态NAT&#xff0c;NAPT都属于源NAT&#xff0c;都是针对源IP地址进行转换的。源NAT主要目的是为了保证内网用户可以访问公网。 先执行安全策略&#xff0c;后执行NAT 目标NAT 基于…

git的分支管理

✨前言✨ &#x1f4d8; 博客主页&#xff1a;to Keep博客主页 &#x1f646;欢迎关注&#xff0c;&#x1f44d;点赞&#xff0c;&#x1f4dd;留言评论 ⏳首发时间&#xff1a;20246月19日 &#x1f4e8; 博主码云地址&#xff1a;博主码云地址 &#x1f4d5;参考书籍&#x…

【TB作品】MSP430G2553,单片机,口袋板, 单相交流电压、电流计设计

题5 单相交流电压、电流计设计 设计基于MSP430的单相工频交流电参数检测仪。交流有效值0-220V&#xff0c;电流有效值0-40A。电压、电流值经电压、电流传感器输出有效值为0-5V的交流信号&#xff0c;传感器输出的电压、电流信号与被测电压、电流同相位。 基本要求如下 &#xf…

05、部署 YUM 仓库及NFS 共享服务

目录 5.1 部署YUM软件仓库 5.1.1 准备网络安装源&#xff08;服务器端&#xff09; 1、准备软件仓库目录 2、安装并启用vsftpd服务 5.1.2 配置软件仓库位置&#xff08;客户端&#xff09; 5.2 使用yum工具管理软件包 5.2.1 查询软件包 1、yum list——查询软件包列表 …

DGit的使用

将Remix连接到远程Git仓库 1.指定克隆的分支和深度 2.清理&#xff0c;如果您不在工作区上工作&#xff0c;请将其删除或推送至 GitHub 或 IPFS 以确保安全。 为了进行推送和拉取&#xff0c;你需要一个 PAT — 个人访问令牌 当使用 dGIT 插件在 GitHub 上推送、拉取、访问私…

网关助力边缘物联网

网关助力边缘物联网 在探讨网关如何助力边缘物联网&#xff08;IoT&#xff09;的议题时&#xff0c;我们不得不深入分析这一技术交汇点的复杂性与潜力。边缘计算与物联网的融合&#xff0c;通过将数据处理与分析能力推向网络边缘&#xff0c;即数据生成的地方&#xff0c;极大…

接口性能提升秘籍:本地缓存的总结与实践

&#x1f345;我是小宋&#xff0c; 一个只熬夜但不秃头的Java程序员。 &#x1f345;关注我&#xff0c;带你轻松过面试。提升简历亮点&#xff08;14个demo&#xff09; . . &#x1f30f;号&#xff1a;tutou123com。拉你进面试专属群。 优雅的接口调优之本地缓存优化 接口…

Spring中网络请求客户端WebClient的使用详解

Spring中网络请求客户端WebClient的使用详解_java_脚本之家 Spring5的WebClient使用详解-腾讯云开发者社区-腾讯云 在 Spring 5 之前&#xff0c;如果我们想要调用其他系统提供的 HTTP 服务&#xff0c;通常可以使用 Spring 提供的 RestTemplate 来访问&#xff0c;不过由于 …

初识es(elasticsearch)

初识elasticsearch 什么是elasticsearch&#xff1f;&#xff1a; 一个开源的分部署搜索引擎、可以用来实现搜索、日志统计、分析、系统监控等功能。 什么是文档和词条&#xff1f; 每一条数据就是一个文档对文档中的内容进行分词&#xff0c;得到的词语就是词条 什么是正向…

【elementui源码解析】如何实现自动渲染md文档-第四篇

目录 1.前言 2.md-loader - index.js 1&#xff09;md.render() 2&#xff09;定义变量 3&#xff09;while stripTemplate stripScript genInlineComponentText 4&#xff09;pageScript 5&#xff09;return 6&#xff09;demo-block 3.总结 所有章节&#x…

微纳米气泡发生器是微纳米气泡产生装置 未来市场需求将不断释放

微纳米气泡发生器是微纳米气泡产生装置 未来市场需求将不断释放 微纳米气泡发生器即微纳米气泡发生设备&#xff0c;是一种将水和气体混合并产生微纳米气泡的设备。微纳米气泡是指直径在100μm以下的气泡&#xff0c;分为纳米气泡和微米气泡。   微纳米气泡发生器主要由发生设…

录屏录音两不误!电脑录屏录音软件推荐(3款)

在数字化时代&#xff0c;电脑录屏录音软件已成为教学、演示、会议记录等领域不可或缺的工具。它们能够捕捉屏幕上的每一个动作&#xff0c;同时录制音频&#xff0c;为用户提供直观、生动的视听材料。本文将详细介绍三种常用的电脑录屏录音软件&#xff0c;帮助读者了解并掌握…

误删的文件不在回收站如何找回?6个恢复秘诀分享!

“我刚刚误删了一些文件&#xff0c;但是在回收站中没有看到这部分文件&#xff0c;这种情况下还有方法可以找回误删的文件吗&#xff1f;在线等一个答案&#xff01;” 在数字化时代&#xff0c;文件的安全和完整性对于个人和企业都至关重要。然而&#xff0c;有时候由于疏忽或…