Python 中的截断除法与底除法

2024-03-09

为了建立上下文,我仅讨论整数算术,对于大整数,因此不能选择浮点,并且使用负数,因此取整除法和截断除法之间的差异很重要。

当对负整数执行除法时,典型的硬件和 C 系列编程语言会给出截断的结果,例如1 / -2 = 0。Python 2 给出了底数结果,例如1 / -2 = -1。

尽管存在关于哪个本质上更好的争论,但有没有办法让 Python 给出截断的结果?如果使用 Python 3 而不是 2 有什么区别吗?


好吧,如果你只是想要一个解决方案,请记住int截断数字,因此不要进行整数除法,而是用int

int(1./-2)

如果您使用的是 Python 3.X,您可以简单地执行以下操作

int(1/2)

如果您希望 Py 2.X 中的相同行为从未来导入除法

from __future__ import division
int(1/2)

如果您想了解此行为的确切原因,请阅读这篇精彩的文章为什么Python有整数除法层 http://python-history.blogspot.com/2010/08/why-pythons-integer-division-floors.html


看看您在使用浮动除法时遇到的困境,这是一种替代方法,据我测试,该方法似乎有效。如果您遇到任何问题,请随时告诉我

>>> def trunc_div(a,b):
    q, r = divmod(a,b)
    if  q < 0 and r:
        q += 1
    return q

>>> trunc_div(1,-2)
0
>>> trunc_div(999999999999999999999999999999999999999999, -2)
-499999999999999999999999999999999999999999L
>>> trunc_div(999999999999999999999999999999999999999999, 2)
499999999999999999999999999999999999999999L
>>> trunc_div(1,2)
0
>>> 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python 中的截断除法与底除法 的相关文章

随机推荐

  • mvc c# html.dropdownlist 和 viewbag

    所以我有以下 伪代码 string selectedvalud C List
  • 如何在node.js模块中实现继承?

    我正在编写 Nodejs 应用程序 它基于expressjs 我对在 Nodejs 模块中进行继承感到困惑 我想做的是创建一个模型基类 比方说 my model js module exports function my model my
  • 在 C# 中提取 .cab 文件

    我正在开发一个 C 应用程序 我需要提取一个 cab 文件 我找不到在 C 中执行此操作的库 由于许可问题 我无法使用 Microsoft Deployment Compression Cab dll I found this https
  • 联系表格 7 至 WordPress 用户数据库

    我编写了以下函数 以便在发送联系表单时将其添加到用户数据库字段中 问题是它发送了最终电子邮件 但没有向数据库输入任何内容 因此我一定在某个地方出现错误 任何帮助将不胜感激 add action wpcf7 before send mail
  • 如何向 Spring Security 用户详细信息添加其他详细信息

    我想向用户详细信息添加其他信息 例如用户的 IP 地址 有什么办法可以实现这一点吗 我尝试创建一个新的 CustomSpringUser 类 但问题是如何从 Authentication 对象获取此信息 有没有其他方法来存储经过身份验证的用
  • NSDateFormatter 毫秒错误

    我想创建一个 NSDateFormatter 来解析像这样的日期 2014 05 13 23 31 41 374577 所以 NSDateFormatter formatter NSDateFormatter alloc init form
  • C# 中的带宽限制

    我正在开发一个程序 该程序在后台不断发送数据流 我希望允许用户设置上传和下载限制的上限 我已经阅读了令牌桶 http en wikipedia org wiki Token bucket and 漏桶 http en wikipedia o
  • .NET v4.0 中无法识别的属性“enableSsl”

    我们已经测试运行新系统一段时间了 并将电子邮件创建到文件夹中 这样它们就不会意外发送给客户 现在我们已经打开实时电子邮件发送功能 但我们遇到了发送问题 我正在使用 ActionMailer NET 创建和发送电子邮件的代码如下 我不会包含视
  • 如何修改多个servlet的web.xml

    我只是对如何修改多个 servlet 的 web xml 感到困惑 我有3个servlet来处理3个不同的jsp 但现在只有1个servlet有效 您应该在 web xml 文件中声明并定义类 servlet 如下所示
  • 从 Python 中的“with”块中进行屈服是否安全(以及为什么)?

    协程和资源获取的结合似乎可能会产生一些意想不到的 或不直观的 后果 基本问题是这样的方法是否有效 def coroutine with open path r as fh for line in fh yield line 确实如此 你可以
  • 在 Pandas Dataframe 中聚合、转置和提取价值

    Input DF ID Time Value 0 1 5 0 2 7 0 3 8 1 1 1 1 2 4 1 3 6 Output DF 1 2 3 0 5 7 8 1 1 4 6 Goal 我目前有类似于输入 DF 的东西 并且希望将其转
  • 如何生成PDF? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 对于我的 Microsoft Surface 应用程序 我想生成一个包含一些图像的 PDF 我应该如何开始这样做 编辑 我不想转换文本
  • 权限“”未知或 URL 模式格式错误

    我是扩展开发的新手我尝试过使用权限 url 作为
  • 如何引用 github 中的特定行或行范围?

    如果您想添加对特定行或一系列行的引用 最好获得一个可以执行此操作的 URL 请注意 问题在于 Lxx Lyy是 从这个帖子 http dropshado ws post 8347781227 github link to source co
  • 你见过的最可笑的悲观主义是什么? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 放心休息和多个职位

    我正在尝试使用 REST 确保来测试我的登录 注销功能 是否可以进行一个 REST 保证的测试 先登录然后再注销 如果没有 我怎样才能正确测试它 只需发送两个post 与一个assert expect import org junit As
  • 对于许多请求,nodeJS 会挂起并且 Promise 无法解析 - 特别是在低带宽情况下

    具体代码 循环中的多个请求挂出节点 尤其是在低带宽连接上 const baseRequest request defaults const specialRequest baseRequest defaults agent false MU
  • 三个 Js Object3D 按钮组检测单个对象点击,同时鼠标移动导致 Object3D 按钮组 Zoomi

    我正在尝试检测 Object3D 立方体组中的立方体单击 我已查看并尝试合并以下位置的示例和教程 http mrdoob github com Three js examples webgl interactive cubes html h
  • Oracle Order by 不适用于 DUAL 中的子查询

    大家好 当我执行此查询时 它抛出以下错误 ORA 00907 missing right parenthesis 但如果你删除order by 1 from SELECT 2 FROM DUAL order by 1它的工作 我是否错过了这
  • Python 中的截断除法与底除法

    为了建立上下文 我仅讨论整数算术 对于大整数 因此不能选择浮点 并且使用负数 因此取整除法和截断除法之间的差异很重要 当对负整数执行除法时 典型的硬件和 C 系列编程语言会给出截断的结果 例如1 2 0 Python 2 给出了底数结果 例