浮点数

作者: dnhb | 来源:发表于2018-02-26 19:58 被阅读0次

    浮点数

    @(Python入门)

    [TOC]

    导言

    浮点数在python中可以直接处理的数据类型之一,那么什么是浮点数?它的表示方法是什么?它在python中有什么样的性质?它为什么叫浮点数?等等

    浮点数的历史

    人们需要比较在计算机中存储的数值的大小。如果是整数与整数的比较,只需要进行右对齐,空白的地方补0,然后依次比较对应位的数值大小。

    2000
    0100
    

    但是如果是整数和小数的比较呢?
    此时需要对齐它们的小数点,并在空白的地方补0,最后依次比较对应位的数值大小。

    10000
    02345.12
    

    那么小数和小数的比较呢?
    首先对齐小数点,其次空白补0,最后依次比较。

    12345.6780
    01234.6789
    

    综上,符号相同的数比大小的时候,都需要先对齐小数点。既然如此,人们就规定计算机中储存的数值的数位和小数点位置都是固定的,这样的数集被称为定点数。但是出现了两个问题:

    1. 定点数不能储存太大的数值。因为数位固定及小数点位置固定,所以整数部分的数位也是固定的,一旦数值超过范围,计算机就无法处理了。
    2. 定点数不能有效储存太小的数值。同上,太小的数值会出现大量的0,浪费储存空间;并且,需要舍去超过数位后面的数,储存的数值精度低。

    浮点数是被设计出来解决这两个问题的。

    浮点数

    浮点数在定点数的基础上引入了阶码,阶码是将定点数的小数点移动若干位的工具。因为浮点数在计算机中存储的小数点位置是不确定的,所以称为浮点数。

    浮点数名称的由来是我个人定义的,知乎上和教程上写的都是“因为浮点数的小数点可以移动,所以称为浮点数。”但是,结合到科学计数法中的规定,尾数是大于等于1小于10的,所以我推测,在计算机中,数值的精读确定时,浮点数的储存格式是固定的,不存在有12.2e10和1.22e11这两种方式共存,因为表示简洁和节约空间。所以,我认为“浮点数的小数点可以移动”是浮点数被命名原因是不正确的。

    浮点数有多种表示方法:二进制、十进制等等。其中二进制的表示是$ a×2^b $,其中a称为尾数,b称为指数,在计算机中尾数和指数是分开存储的。

    浮点数的结构:阶符± + 阶码e + 数符± + 尾数m

    阶符指正指数or负指数。
    阶码e表示十进制。
    数符表示数的正负。
    尾数是由精度及数决定。

    参考

    https://www.zhihu.com/question/19848808

    https://baike.baidu.com/item/%E6%B5%AE%E7%82%B9%E6%95%B0/6162520?fr=aladdin

    https://baike.baidu.com/item/%E7%A7%91%E5%AD%A6%E8%AE%B0%E6%95%B0%E6%B3%95/1612882?fr=aladdin

    相关文章

      网友评论

          本文标题:浮点数

          本文链接:https://www.haomeiwen.com/subject/nyquxftx.html