• 浮点数如何表示,以及为什么会出现精度问题


    浮点数在计算机中也是用二进制表示的,只不过有一定规则(公式)

     第一段占 1bit,表示符号位。代称为 S(sign)。

    第二段占 8bits,表示指数。代称为 E(Exponent)。

    第三段占 23bits,表示尾数。代称为 M(Mantissa)。

    对 3.14 这个小数进行表示
    是正数。所以,S = 0
    2^1 < 3.14 <2^2。所以,n=1, n+127 = 128。所以,E=128。
    (3.14 - 2) / (4 - 2) = 0.57, 而 0.57*2^{23} = 4781506.56,四舍五入,得到 M = 4781507。因为有四舍五入,所以,产生了浮点数据的精度问题。
    至此,根据小数3.14以及上面的公式算出了S E M

    把 S、E、M 转成二进制,放入二进制位的三段得到 3.14 的二进制表示

     为什么会产生精度问题?

    产生精度问题,其实是将二进制的3段变量重新带入公式,算出的结果与原值不同的问题

    问题就出在,第一次计算M时就有了精度问题4781506.56四舍五入4781507

  • 相关阅读:
    MylSAM引擎的特点及场景使用
    innodb的特性及常用场景
    标准库functools.wraps的使用方法
    requests基本使用
    linux常用指令
    爬操插件json作指示图文详解
    Django form表单
    python 装饰器
    Django 的路由分配系统
    Django 的ORM
  • 原文地址:https://www.cnblogs.com/zxporz/p/13403522.html
Copyright © 2020-2023  润新知