1.浮点型的概念

浮点型分为单精度(single)浮点型和双精度(double)浮点型;

IEEE浮点数算术标准(IEEE 754)是IEEE二进位浮点数算术标准(IEEE Standard for Floating-Point Arithmetic)的标准编号,等同于国际标准ISO/IEC/IEEE 60559。该标准由美国电气电子工程师学会(IEEE)计算机学会旗下的微处理器标准委员会(Microprocessor Standards Committee, MSC)发布,是最广泛使用的浮点数运算标准,为许多CPU与浮点运算器所采用。

这个标准定义了表示浮点数的格式(包括负零-0)与反常值(denormal number),一些特殊数值(无穷与非数值(NaN)),以及这些数值的“浮点数运算子”,它也指明了四种数值修约规则和五种例外状况(包括例外发生的时机与处理方式)。

2.计算机存储和表达

任何存储为double格式的值都需要64位,格式如下:

用法

63

符号(0=正数,1=负数)

62 至 52

指数

51 至 0

小数位(分数位)

任何存储为single格式的值都需要32位,格式如下:

用法

31

符号(0=正数,1=负数)

30  23

指数

22  0

小数位(分数位)

3.创建方法

创建双精度浮点数使用double函数,创建单精度浮点数使用单精度single函数;

程序示例:

double(1)  %创建双精度浮点型1

a=1  %默认双精度浮点型,再赋值给a

single(1)  %单精度1

4.浮点型的取值范围

测试浮点型数据的取值范围最大值和最小值分别使用realmax和realmin函数;

程序示例:

realmax('double')  %双精度最大取值范围

[-realmax,-realmin,realmin,realmax]  %完整的双精度取值范围(-0和0之间取不到任何值)

[-realmax('single'),-realmin('single'),realmin('single'),realmax('single')]

%单精度浮点型取值范围,上式未指定则默认取双精度浮点型范围

5.判断数据类型

判断是否为浮点型使用isfloat函数,测试一个变量的数据类型使用class函数;

程序示例:

a=1

isfloat(a)  %判断是否浮点型

class(a)  %测试变量a的数据类型

6.浮点型与整型的转换方法

c=int8(1)  %整型1

c1=double(c)  %整型转化为双精度,数据类型创建方法也是转化方法

c2=single(c)  %转化为单精度

int8(c1)  %双精度转化为整型

whos c c1 c2  %查看数据类型:双精度8字节精度最高

7.精度问题的引出

先看一组程序示例:

(4/3-1)*3-1  %结果不是0

sin(pi)    %结果不是0

说明,大家可以在Matlab运行上面两行代码看一下结果,是不是有点意外;

8.浮点型的精度问题

在Matlab中,几乎所有的运算,默认都是以符合IEEE 754标准的双精度算法执行的,由于计算机只能以有限的精度表示数字(双精度要求52个尾数位),对于数值运算,这种浮点型表示值与其真实值存在微小的差异;

所以,如果浮点算术运算的结果不如预期的那样精确,甚至有时会产生数学上非直觉的结果,则很可能是由于计算机硬件的限制造成的,硬件可能没有足够的位来表示结果的完全准确性,因此仅截取了结果值的部分精度;

但这并不是matlab中的错误,运用IEEE 754标准所执行的所有计算都受到影响,其中包括用C或FORTRAN等;

9.精度问题相关函数eps

eps函数默认求数值1的精度,求得的结果是计算机表达1这个数值时,由于硬件限制产生的误差值,因为计算机有限位数只能存储有限精度;

程序示例(建议打开Matlab练习体会)

1

eps

1+eps  %返回结果1,即eps视为和1之间没有再存储其他数值,返回1

eps(10)  %10附近的精度

eps(100)  %100附近的精度

eps(single(100))  %单精度100附近的精度

10.精度问题的处理方法:符号运算

程序示例:

(4/3-1)*3-1  %4/3并非完整精确的分数,而是有限存储空间内的近似值,因此结果并非0

(sym(4/3)-1)*3-1  %返回0,引入符号型获得精确4/3值

sin(pi)  %圆周率pi会保留部分精度的小数再进行计算,因此结果有误差

sin(sym(pi))  %sym将pi转化为符号型再求sin值,结果是0

11.相关文章

Matlab自学笔记十三 数据类型:整型,创建方法、取值范围、整型运算、常用函数、程序示例https://blog.csdn.net/freexyn/article/details/128362178Matlab自学笔记九:算术运算、数组运算、矩阵运算、运算符、常用函数、程序示例https://blog.csdn.net/freexyn/article/details/127948563

12.相关视频

1.23/Matlab浮点型数据类型/计算sin(pi)≠0/你知道原因吗

End

自学笔记十四:Matlab浮点型:创建和转换、取值范围、运算和精度问题相关推荐

  1. Matlab App Designer自学笔记(十四):分档旋钮控件、下拉菜单控件、微调控件

    由于一些主观及客观的原因,博主已经放弃了在CSDN上更新文章,感兴趣的朋友可以去我的个人博客去浏览可能需要的文章. 陶小桃Blog-无限进步的优质帅气大学生!热衷于分享技术和日常生活的机械专业小哥哥, ...

  2. 吴恩达《机器学习》学习笔记十四——应用机器学习的建议实现一个机器学习模型的改进

    吴恩达<机器学习>学习笔记十四--应用机器学习的建议实现一个机器学习模型的改进 一.任务介绍 二.代码实现 1.准备数据 2.代价函数 3.梯度计算 4.带有正则化的代价函数和梯度计算 5 ...

  3. 《C++游戏开发》笔记十四 平滑过渡的战争迷雾(二) 实现:真正的迷雾来了

    本系列文章由七十一雾央编写,转载请注明出处. http://blog.csdn.net/u011371356/article/details/9712321 作者:七十一雾央 新浪微博:http:// ...

  4. Polyworks脚本开发学习笔记(十四)-WORKSPACE信息读取及管理

    Polyworks脚本开发学习笔记(十四)-WORKSPACE信息读取及管理 Polyworks的工作任务存储分为工作区和项目两级,通过WORKSPACE命令获取工作任务信息,实现更好的任务管理. 下 ...

  5. 强化学习经典算法笔记(十四):双延迟深度确定性策略梯度算法TD3的PyTorch实现

    强化学习经典算法笔记(十四):双延迟深度确定性策略梯度算法TD3的PyTorch实现 TD3算法简介 TD3是Twin Delayed Deep Deterministic policy gradie ...

  6. 【V-REP自学笔记(八)】控制youBot抓取和移动物体

    [V-REP自学笔记(八)]控制youBot抓取和移动物体 [导读] 在这一系列的V-REP自学笔记中,我们定了一个小目标,完成一个Demo.使用官方提供的KUKA公司的YouBot机器人模型来实验机 ...

  7. 数据科学和人工智能技术笔记 十四、K 最近邻

    十四.K 最近邻 作者:Chris Albon 译者:飞龙 协议:CC BY-NC-SA 4.0 确定 K 的最佳值 # 加载库 from sklearn.neighbors import KNeig ...

  8. 机器学习笔记十四:随机森林

    在上一篇机器学习笔记十三:Ensemble思想(上)中,简要的提了一下集成学习的原理和两种主要的集成学习形式.  而在这部分要讲的随机森林,就算是其中属于bagging思路的一种学习方法.为了篇幅,b ...

  9. 《图解TCP/IP》笔记(十四)传输层两大协议TCP和UDP

    前言:这是我<图解TCP/IP>笔记系列最后一篇(咕咕咕了将近两个月hh),TCP UDP其实面试的时候经常问到! 目录 传输层的定义: TCP与UDP对比 端口号 通信识别: 确定端口号 ...

最新文章

  1. 使用iso升级_华佗品牌战略升级 彰显百年品质-产经要闻
  2. 面向侧面的程序设计AOP-------《二》本质
  3. [HNOI2016]矿区
  4. SAP Gigya里类似Netweaver里SAP_ALL的权限
  5. python 循环播放音乐_python gstreamer实现视频快进/快退/循环播放功能
  6. Pwn2Own 2020线上争霸赛落幕:Fluoroacetate 团队四度蝉联 Master of Pwn!
  7. python卸载干净_Python卸载不干净?Mac完全卸载python方法
  8. MySql 使用规范推荐(转)
  9. 数据驱动型文化是大数据成功的关键
  10. ssh远程连接网络构建
  11. FPGA教程和allegro教程-链接
  12. wps计算机打印双面输出,WPS轻松办公—-文档双面打印的两种方法
  13. 机房服务器巡视项目,年底,机房巡检不能少
  14. c语言代码混淆器,代码混淆
  15. oracle里xdb用户,修改Oracle XDB默认监听端口
  16. RHCE7 -- systemctl命令
  17. xcode6-beta下载
  18. matlab开方分布上分位点,概率密度分布函数和上分位点的数值计算
  19. 服务器知识:什么是云服务器、VPS、高防服务器、国外服务器
  20. 分享《生死狙击2》的大场景草渲染

热门文章

  1. 高校邦网课大学生职业生涯规划答案
  2. ET5.0 UGUI替换为FairyGUI
  3. 深度解析 | 俞军的产品方法论
  4. 在react项目里面引入less预处理器
  5. 经纬度 十进制 和 度分秒 转换
  6. [Study]Git
  7. chrome插件 自动点击页面元素 自动填入内容
  8. springBoot 2.x过滤器--监听器--拦截器
  9. 对同性恋的称呼与禁忌(不足的请补充啊)
  10. 930群控服务器虚拟机,安卓群控系统虚拟机版本跟真机版区别