浮点型常量

浮点型即生活中使用的小数类型(例如3.14),例如账户的余额,银行的存款利率等等都是浮点型。

C语言中按照精度的不同分别使用float,double和long double表示,默认浮点类型是double,float占据四个字节,double占据8个字节,long double大于等于8个字节,Windows 32位和64位系统long double都是8个字节,Ubuntu18.04系统下long double是占据16个字节。

浮点数的常量可以使用十进制的小数和科学计数法表示,科学计数法可以存储特大或者特小的数字

浮点数变量

在初始化浮点数变量时,默认值建议为0.0或者0.0f,赋值时变量的值和变量的类型保持一致。

printf()函数输出float类型的变量使用格式符%f,输出double类型的变量使用%lf。

浮点型极限

C语言在limits.h的头文件中使用常量定义了float和double以及long double的极限值,我们可以使用sizeof()关键字求出float,double和long double的字节数量以及使用常量

FLT_MAX,FLT_MIN求出float表示的最大值和最小值以及DBL_MAX,DBL_MIN求出double所能表示的最大值和最小值。

在windows上double和long double是等价的,但是在Linux(例如Ubuntu 18.04上)long double是占据16个字节,这也就意味着long double的极限比double更大。

浮点数在内存中的存储

首先明确一点,无论是整型、浮点型还是字符等等数据类型在计算机底层都是以二进制的方式存储的。

浮点数在内存中的存储和整数不同,因为整数都可以转换为一一对应的二进制数据。

而浮点数的存储是由符号位(sign)+指数位(exponent)+小数位(fraction)组成。

其中float是由1位符号位+8位指数+23位小数组成,

而double是由1位符号位+11位指数位+52位小数位组成。

int和float同样占据四个字节的内存,但是float所能表示的最大值比int大得多,其根本原因是浮点数在内存中是以指数的方式存储。

我们都知道在内存中,一个float类型的实数变量是占据32位,即32个二进制的0或者1组成

从低位依次到高位叫第0位和第31位,这32位可以由三部分组成:

符号位:第31位数表示符号位,如果为0表示整数,如果为1表示负数

指数:第23位到第30位,这8个二进制表示该实数转化为规格化的二进制实数后的指数与127(127即所谓的偏移量)之和所谓阶码,规格化的二进制实数只能在-127-127之间。

小数位:第0位到第22位,最多可以表示23位二进制小数,否则超过了就会产生误差。

浮点数相等性判断

float占据四个字节,提供的有效位是6-7位,而double占据八个字节,提供的有效位数是15-16位,如果在使用float或者double表示实数时超过有效数字,若拿来进行关系运算(例如等于)的话,会得到一个错误的结果。

64位浮点数_【C语言教程】C语言浮点数及其应用相关推荐

  1. 安装64位Oracle 10g超详细教程

    安装64位Oracle 10g超详细教程 1. 安装准备阶段 1.1 安装Oracle环境 经过上一篇博文的过程,已经完成了对Linux系统的安装,本例使用X-Manager来实现与Linux系统的连 ...

  2. 计算机中丢失msc,mscvr120.dll32位/64位版_修复计算机中丢失msvcr120.dll

    mscvr120.dll32位/64位版_修复计算机中丢失msvcr120.dll mscvr120.dll是系统的非常重要的一个文件,相信很多的人都是遇到文件丢失的情况,这个时候就需要你在下载一个d ...

  3. appserv怎么安装mysql_AppServ怎么安装?AppServ 8.6.0 64位图文超详细安装教程(附下载)...

    AppServ是一款著名的PHP架站工具组合包,来自泰国的作者将网络上的免费架站资源重新整合包装成为一个安装程序,AppServ 所包含的软件有:Apache.Apache Monitor.PHP.M ...

  4. win7 64位系统下bugfree安装教程及排坑提示

    win7 64位系统下bugfree安装教程 准备工作 xampp-win32-5.6.38-0-VC11-installer bugfree_v3.0.1 排坑提示: 切记不要直接点页面上XAMPP ...

  5. 在线 Go 语言教程 —— Go 语言之旅(gotour)

    ​ 初识gotour Go 语言之旅,支持在线敲代码练习的官方入门教程 Go 语言性能很高,非常适于后端网络.分布式编程,因此受到各大互联网公司的青睐. 那么如何学习 Go 语言呢? 其实官方已经为我 ...

  6. 易语言写64位魔兽世界游戏 寻路call 教程

    自从Game-EC 8.5.3 辅助模块 发布 开发 64位游戏内存,封包的功能后, 受到了很多写 64位游戏封包,内存辅助的爱好者喜爱 今天在新版本 Game-EC 里面 开发了一个 能调用64位游 ...

  7. c语言 怎么访问64位地址_大神用10000字总结了嵌入式C语言必学知识点……

    导读:怎么做好嵌入式?相信这个问题无论问谁你都会得到一句学好C语言!今天推荐一篇大佬写的嵌入式C语言知识点总结,非常值得一读. 从语法上来说C语言并不复杂, 但编写优质可靠的嵌入式C程序并非易事,不仅 ...

  8. oracle11g 下载图解,oracle11g 64位客户端下载 附安装教程

    软件大小: 587.18 MB 更新时间: 2016-03-22 软件语言: 简体中文 软件厂商: Home Page 软件等级: 软件类别: 国产软件 / 免费软件 / 编程工具 官方网站: 应用平 ...

  9. 32位dll注入到64位程序_你用的32位还是64位?有什么区别呢?

    (给程序员零距离加星标,了解项目开发.) 粉丝福利:小编会从今天留言中抽选3名小伙伴赠送现金红包,感谢大家一直以来的支持!文末见喽!通过前面两篇文章的学习,外甥对电脑的产生了各种好奇,差点把自己电脑拆 ...

  10. arduino i2c 如何写16位寄存器_树莓派3B开发Go语言(二)寄存器版本GPIO

    作者:爪爪熊 链接:https://www.jianshu.com/p/0495c0554a63 來源:简书 之前将go语言的运行环境给搭建起来了,但是没有开始真正的试试Go 语言操作树莓派硬件的效果 ...

最新文章

  1. PowerDesigner最基础的使用方法入门学习
  2. linux每日命令(14):less命令
  3. Oracle 判断字符串是否能转成数字。
  4. 【Python数据挖掘课程】九.回归模型LinearRegression简单分析氧化物数据
  5. mysql数据库时间突然是12小时制_为什么存入mysql数据库中的timestamp,晚了13或14个小时...
  6. AI产品经理必修课:机器学习算法
  7. Android 中this、getContext()、getApplicationContext()、getApplication()、getBaseContext() 之间的区别...
  8. Python 命令行之旅:深入 argparse(二)
  9. iOS App打包上架超详细流程1
  10. 原生小程序用画布制作海报,等比例缩放,和uniapp差不多就是写法有点不同
  11. 本周测试服务器角色转移系统仅开放转入,梦幻西游3月11日更新一览
  12. pack_padded_sequence;pad_packed_sequence
  13. shiro身份认证(HelloWorld)
  14. QTcpSocket客户端和服务端发送图片(或大文件)小Demo
  15. office365 word如何关闭首字母大写
  16. 在论文中加入(制作)目录方法
  17. 500 推荐一波高质量的公众号,都是值得大家关注的优质号!
  18. 2g内存装什么系统好电脑2g内存适合装什么系统
  19. 北京ADSL修改密码的网址
  20. 【LeetCode】1652. 拆炸弹(C++)

热门文章

  1. Spring Cloud Stream与RabbitMQ 消费者 消息分组
  2. mysql8 距离计算_MySQL8 的 Hash join 算法
  3. 每个tabpage中都有一个dategridview_宇宙中每个原子里都隐藏着一个巨大的秘密
  4. js产生页面内的顺序序列号
  5. 页面编码过滤器和配置
  6. androidstudio 评论栏_android-studio 添加没有菜单栏和actionBar的模板
  7. python安装后没有命令_Python的下载安装
  8. Spring-cloud Config Server 3种配置方式
  9. 大数据之R语言速成与实战
  10. 高并发下的系统设计(偏数据库设计)