转载:https://mp.weixin.qq.com/s/VghDOJCJTN61y_6TqLDc2g

0.1(10)转化为二进制:整数部分的二进制就是整数部分除以2得余数压栈,商再除以2得余数压栈,直到商为零压栈最后一个余数,因此整数部分就是0(2);比如整数6的二进制表示就是压栈顺序为0、1、1,倒序弹出所得110(2)就是6的二进制表示。

小数部分与此相反,0.1*2=0.2取出整数部分0压栈,小数部分0.2继续0.2*2=0.4取出整数部分0压栈,小数部分0.4继续0.4*2=0.8取出整数部分0压栈,小数部分0.8继续0.8*2=1.6取出整数部分1压栈,小数部分0.6继续0.6*2=1.2取出整数部分1压栈,小数部分0.2...陷入循环,因此小数部分也就是.00011 00011 0011 0011。

综上,0.1(10)转换为二进制就是0.00011 0011 0011 ...(2),6.1(10)转换为二进制就是110.00011 0011 0011 ...(2)。

小数二进制转成浮点数:

浮点数分为单精度对应32位操作系统和双精度对应64位操作系统。这里解释一下二进制如何转成双精度浮点数二进制。

双精度浮点数用1位表示符号位,11位表示指数位,52位表示小数位,如下:

符号位:正数为0,负数为1;

指数位:阶数+偏移量,阶数是2^(e-1)-1,e为阶码的位数,也就是指数位的位数偏移量是把小数点移动到整数位只有1时移动的位数,正数表示向左移,负数表示向右移

小数位:即二进制小数点后面的数。

把0.1(10)转成的二进制0.00011 0011 0011 ...(2)转成浮点数形式的二进制:

1、先要把小数点移动到整数位只有1,要向右移动4位,故偏移量为-4,通过指数位的计算公式2^(e-1)-1+偏移量=2^(11-1)-1-4=1019,把1019转成二进制为1111111011,不够11位要补零,最终得出指数位位01111111011;

2、移位后的小数位为.1 0011 0011 ...,因为小数位只能保留52位,第50、51、52位、53位分别为0011,故对第52位进1使第51位为1,使第50、51、52位为010

转换结果为:

链接还介绍了两个浮点数相加时让指数位小的浮点数指数位对齐(也就是增加到大的浮点数的指数位,相应地,小浮点数的精度位要左移)后再相加。

误差来源:1、浮点数存储的误差;2、浮点数计算时较小的浮点数精度位左移(指数位向较大数对齐)后"挤掉"小数位右边部分;3、浮点数相加时小数位舍去部分。

20210403:https://mp.weixin.qq.com/s/fMzU3PYPSi_BUT5MsGywRw介绍了JS的大数危机。

浮点数表示的计算方法相关推荐

  1. Python中的浮点数探秘

    下面的探讨主要针对Python3,在Python2中不一定适用. 查看Python的浮点数如何在内存中存储 Python的浮点数实现原理: CPython实现有一个PyFloatObject的结构体, ...

  2. 处理js两个数相乘的坑

    //两个浮点数相乘的计算方法 function accMul(arg1, arg2) { var m = 0, s1 = arg1.toString(), s2 = arg2.toString(); ...

  3. 浮点型数据存储格式详解

    本文是对 Computer Systems__A Programmer's Perspective 一书中 Chapter2__2.4 Floating Point一节的理解 在1985年之前,每个p ...

  4. c语言如何将浮点数转换为字节,浅谈C语言整型与浮点型转换

    本篇博客将阐述.讨论的内容: ●int int的范围根据计算机的不同存在16位或32位的差异,以16位举例,最大值为1111 1111 1111 1111,也就是65535,如果出现65536,就会溢 ...

  5. 64位浮点数_浮点数运算的机器误差分析

    感觉跟专栏主题不是很搭... 不过这是这学期计算物理的作业,还是放上来吧,也算勉强沾边了吧. 用一个浮点数相加的例子来演示计算机在计算时所产生的误差. 在Python中,用0.2+0.4 会得到0.6 ...

  6. python精确小数点_python执行精确的小数计算方法

    在进行浮点数计算时它们无法精确表达出所有的十进制小数位. a = 4.1 b = 5.329 print(a+b) 9.428999999999998 这些误差实际上是底层CPU的浮点运算单元和IEE ...

  7. sqlite数值长度超过7位出错_数值计算方法 第一章 绪论

    一.数值计算方法概览 1.研究对象:数值问题--有限个输入数据(问题的自变量.原始数据)与有限个输出数据(待求解数据)之间函数关系的一个明确无歧义的描述. 例如,求解微分方程的符号解即可看做无限输出, ...

  8. js计算浮点数出现小数;解决js计算小数问题;js数组相加出现小数;

    原博1 原博2 方案1和方案2都是有效的 情景: 在计算浮点数时候,出现多余小数. 例如: 1.11 + 1 = 2.1100000000000003 为什么计算小数会出现误差? 浮点数值的最高进度是 ...

  9. python中浮点数能用乘法吗_简单讲解Python中的数字类型及基本的数学计算

    Python有四种类型的数字:1.整型 a = 2 print a 2.长整型 b = 123456789 print b 3.浮点数 c = 3.2E2 print c 4.复数 复数为实数的推广, ...

最新文章

  1. Unbuntu 终端中使用Tab键不能自动补全
  2. 安徽职高计算机专业对口学校,安徽对口高考学校
  3. 【阿里云课程】如何从零开始完成一个完整的CV项目
  4. 20个jQuery 图片及多媒体画廊插件
  5. bzoj 刷题计划~_~
  6. 软件质量保证计划_如何做好软件项目的质量管理?
  7. kickstart_具有Java Kickstart的MongoDB
  8. awk输出指定行,awk如何取反
  9. 写一个sql实现以下查询结果_SQL复杂查询—知识点梳理(四)
  10. 专题开发十二:JEECG微云快速开发平台-基础用户权限
  11. USACO 2006 Open, Problem. The Country Fair 动态规划
  12. 你知道Arrays.asList 有坑吗?千万别踩啊!
  13. 图片轮播,鼠标放上去即停止,鼠标移除即播放下一张图片
  14. MS word自带公式编辑器、MathType、AxMath三种公式编辑器的比较
  15. matlab 安装 cvx 和 mosek 以及 gurobi
  16. GAMES101-现代计算机图形学入门-闫令琪 - lecture7 着色(Shading) - 课后笔记
  17. 微服务api网关_微服务设计api网关模式
  18. 《微积分:一元函数积分学》——指数函数积分进阶
  19. 图像扭曲(仿射变换)
  20. B2B企业越早做网络营销会有哪些优势 由上海添力张进老师讲解

热门文章

  1. 微信小程序将组件中的文字放置在正中间的方法
  2. 融入动画技术的粒子效果文字动画交互应用
  3. 张鹏:腾讯云直播PCDN加速方案(附视频回放)
  4. 算法导论中英文版下载
  5. 那些让面试官直呼内行的Java知识点(一)
  6. OpenCV实践之路——opencv玩数独之一九宫格轮廓提取与透视变换
  7. IT服务工作——好事成双
  8. 矩阵的求秩:rank( )
  9. 一本通1646GT 考试
  10. Win10 任务管理器的 N 多技巧:老鸟也未必知道