Python中除法使用的注意事项

作者:shichen2014 时间:2021-11-07 07:18:17 

本文实例讲解了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程序设计有一定的帮助。

标签:Python,除法,注意事项
0
投稿

猜你喜欢

  • 在PHP程序中运行Python脚本(接收数据及传参)的方法详解

    2023-11-24 10:14:48
  • 7个鲜为人知却非常实用的PHP函数

    2023-10-15 03:46:47
  • 远程部署工具Fabric详解(支持Python3)

    2023-10-26 14:05:18
  • 有关缓存 Cache 的随想

    2008-06-09 14:25:00
  • 网页版面布局的方法及技巧

    2007-10-29 12:41:00
  • Python高级特性 切片 迭代解析

    2022-03-28 14:32:49
  • 从外到内提高SQL Server数据库性能

    2009-01-22 14:12:00
  • python验证码图片处理(二值化)

    2023-09-14 15:29:02
  • MySQL中与NULL值有关的疑难问题

    2008-11-24 12:47:00
  • python中通过pip安装库文件时出现“EnvironmentError: [WinError 5] 拒绝访问”的问题及解决方案

    2023-08-29 20:25:40
  • 如何处理好网页色彩搭配

    2007-08-10 13:22:00
  • 动态加载JavaScript的小实践

    2009-11-12 12:38:00
  • Python调用C语言的实现

    2021-10-15 11:48:53
  • Python配置文件管理之ini和yaml文件读取的实现

    2022-01-10 15:33:08
  • asp下实现代码的“运行代码”“复制代码”“保存代码”功能源码

    2011-04-14 10:39:00
  • 再论Javascript下字符串连接的性能

    2010-06-26 13:13:00
  • 像表格一样用DIV+CSS给网页布局

    2008-10-18 15:45:00
  • Python装饰器decorator用法实例

    2023-02-06 23:26:43
  • Python列表推导式实现代码实例

    2023-02-07 21:35:05
  • python实现每天自动签到领积分的示例代码

    2023-06-18 09:17:32
  • asp之家 网络编程 m.aspxhome.com