matlab 读入精度丢失,为什么会精度丢失?教你看懂 IEEE-754!

1460000024578632

1460000024578635

上图来自维基百科。

IEEE-754 标准是一个浮点数标准,存在 32、64、128 bit 三种格式(上面两幅图分别是 32 bit 和 64 bit 的情况,结构是一致的),JavaScript 使用的是 64 位,也就是常说的“双精度”,本文将以 64 位举例讲解 IEEE-754 标准。

从图中可知,IEEE-754 标准将 64 位分为三部分:sign,1 bit 的标识位,0 为正数,1 为负数

exponent,指数,11 bit

fraction,小数部分,52 bit

为了举例方便,我们使用下面这串数字介绍 IEEE-754 标准

0100000001101101001000000000000000000000000000000000000000000000

不多不少 64 位,不信的数一数 1460000024578631

sign

第 63 位(也是从左到右看的第一个数),在举例中,sign(符号)的值是 0,也就代表着这是一个正数。

fraction

之所以说 0 到 51 位(共 52 位)是 “fraction(小数)”,是因为这段数字在处理时会置于 1.(会有特例,后面会说)之后。

在举例中,属于 fraction 的 52 位是:

1101001000000000000000000000000000000000000000000000

这 52 位数字在本文中简称为 f(f 代指 fraction),加上前面提到需要添加的 1.,所谓的 1.f 是这样的:

1.1101001000000000000000000000000000000000000000000000

如果你问为什么要塞个 1 在前面,我也没查,总之就是这么规定的,这确实是名副其实的“小数” 1460000024578633

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值