某某茶叶有限公司欢迎您!
金沙棋牌在线 > 金沙棋牌在线 > python中的除法

python中的除法

时间:2019-12-05 22:10

python2和python3除法的最大区别:

Python中将两个整数相除,默认结果是为整数的。但我们可以通过下面的方法,使得两个整数相除的结果为小数。

在python2中执行除法操作如果结果小于1就会返回0

如下面的例子:

        >>>81/82        0

Python中除法使用的注意事项,python除法

本文实例讲解了Python中除法使用的注意事项,是非常重要的技巧,对于Python程序设计来说有很好的借鉴价值。具体分析如下:

现来看如下示例:

def avg(first, *rest): 
  return (first + sum(rest)) / (1 + len(rest)) 
# Sample use 
avg(1, 2)    # 1.5 
avg(1, 2, 3, 4) # 2.5 

源程序只是为了演示变长参数的使用,不过 Python 2.7.1 的解释器里,我得到的结果却和注释的结果不一样

>>> def avg(first, *rest): 
...   return (first + sum(rest)) / (1 + len(rest)) 
...  
>>> avg(1, 2) 
1 
>>> avg(1, 2, 3, 4) 
2 

可以很明显的看到,小数点后的数据被截断了,我记得两个整数相除,"//" 应该才是取整,难道我记错了?

>>> def avg(first, *rest): 
...   return (first + sum(rest)) // (1 + len(rest)) # change '/' to '//' 
...  
>>> avg(1, 2) 
1 
>>> avg(1, 2, 3, 4) 
2 

将 “/” 改成了“//”,得到的结果是一样的,“//”的确是取整这一点我是没记错,不过为什么“/”的结果也是截断了的?

同样的程序我在 3.4.1 的解释器里面做了测试,得到了预想的结果:

>>> def avg(first, *rest): 
...   return (first + sum(rest)) / (1 + len(rest)) 
...  
>>> avg(1, 2) 
1.5 
>>> avg(1, 2, 3, 4) 
2.5 
>>> def avg(first, *rest): 
...   return (first + sum(rest)) // (1 + len(rest)) # change '/' to '//' 
...  
>>> avg(1, 2) 
1 
>>> avg(1, 2, 3, 4) 
2 

可以看到在 3.4.1 的解释器里,“/”的结果保留了小数位,而“//”则是取整后的结果

搜索之后,找到了stackoverflow上的这个问题:Python里如何强制除法的结果为浮点数? 注意这个是针对 2.x 的版本,3.x 里面并不存在这样的问题
答案的前两个解决方案,都很不错:

方法1:

>>> from __future__ import division 
>>> a = 4 
>>> b = 6 
>>> c = a / b 
>>> c 
0.66666666666666663 

方法2:

类似于C语言里面的做法:

c = a / float(b)

相信本文所述实例会对大家的Python程序设计有一定的帮助。

python2:

图片 1from __future__ import division
图片 2
图片 3print 7/3

如果你需要返回"正确的结果",有两种方法:
  • 在脚本中引入fromfutureimport division
        >>> from __future__ import division        >>> 81/82        0.98780487804878048
  • 将除数或者被除数转换为浮点数
        >>> 81.0/82        0.98780487804878048        >>> 81/82.0        0.98780487804878048

python中精确除法命令不正确,支招

from 后面有个 空格  

print 500/1000

输出结果:

在python3中不会出现这种问题:

如下面的例子:

    Python 3.4.5 (default, Jun  1 2017, 13:52:39)     [GCC 4.4.7 20120313 (Red Hat 4.4.7-18)] on linux    Type "help", "copyright", "credits" or "license" for more information.    >>> 81/82    0.9878048780487805

python语言,有什函数可以用来获得除法运算的余数?

%号就是了
3%1=1  

本文实例讲解了Python中除法使用的注意事项,是非常重要的技巧,对于Python程序设计来说有很好的借...

python2结果:取整数部分,小数并没有保留

2.3333333333

0

Process finished with exit code 0

 

python3:

print 500/1000

python3结果:得到真实结果,小数保留

0.5

Process finished with exit code 0