美文网首页
02.除法--浮点数与整数相除

02.除法--浮点数与整数相除

作者: 31c83c38fa9a | 来源:发表于2018-07-27 20:12 被阅读0次

    这个标题和上面的标题格式不一样,上面的标题是“整数除以整数”,如果按照风格一贯制的要求,本节标题应该是“浮点数除以整数”,但没有,现在是“浮点数与整数相除”,其含义是:

    假设:x除以y。其中 x 可能是整数,也可能是浮点数;y可能是整数,也可能是浮点数。

    出结论之前,还是先做实验:

    >>> 9.0 / 2

    4.5

    >>> 9 / 2.0

    4.5

    >>> 9.0 / 2.0

    4.5

    >>> 8.0 / 2

    4.0

    >>> 8 / 2.0

    4.0

    >>> 8.0 / 2.0

    4.0

    归纳,得到规律:不管是被除数还是除数,只要有一个数是浮点数,结果就是浮点数。所以,如果相除的结果有余数,也不会像前面一样了,而是要返回一个浮点数,这就跟在数学上学习的结果一样了。

    >>> 10.0 / 3

    3.3333333333333335

    这个是不是就有点搞怪了,按照数学知识,应该是3.33333...,后面是3的循环了。那么你的计算机就停不下来了,满屏都是3。为了避免这个,Python武断终结了循环,但是,可悲的是没有按照“四舍五入”的原则终止。当然,还会有更奇葩的出现:

    >>> 0.1 + 0.2

    0.30000000000000004

    >>> 0.1 + 0.1 - 0.2

    0.0

    >>> 0.1 + 0.1 + 0.1 - 0.3

    5.551115123125783e-17

    >>> 0.1 + 0.1 + 0.1 - 0.2

    0.10000000000000003

    越来越糊涂了,为什么computer姑娘在计算这么简单的问题上,如此糊涂了呢?不是computer姑娘糊涂,她依然冰雪聪明。原因在于十进制和二进制的转换上,computer姑娘用的是二进制进行计算,上面的例子中,我们输入的是十进制,她就要把十进制的数转化为二进制,然后再计算。但是,在转化中,浮点数转化为二进制,就出问题了。

    例如十进制的0.1,转化为二进制是:0.0001100110011001100110011001100110011001100110011...

    相关文章

      网友评论

          本文标题:02.除法--浮点数与整数相除

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