当前位置: 首页 > 面试题库 >

在Python中使用整数除法

景宏富
2023-03-14
问题内容

您能帮我弄清楚这个Python部门吗

基数= 12.0

高度= 16

面积= 1/2 基础高度

解决方案对此表示

面积=(基数*高度)/ 2;

让我感到困惑的是1/2将是浮点数,而Python仅显示0而不是0.5,为什么在这种情况下解决方案显示/ 2 …


问题答案:

Python2.7自动使用/运算符作为整数(整数)除法,该运算符将始终产生整数。

例如:

1/2 = 0

3/4 = 0

100/30 = 3

要进行浮点除法,必须将一个或两个值都作为浮点类型。

像这样:

Area = 1.0/2 * Base * Height # 1.0 is a float type, 1 is an integer type

结果不是您所期望的,因为Python使用整数除法和运算顺序来评估表达式。

如果您16 * 12 / 2使用Python进行评估,Python会将其解释为(16 * 12) / 2192 / 2 = 96

如果进行评估1/2 * 16 * 12,Python会将其解释为(((1/2) * 16) * 12)=(0 * 16) * 12

进一步的例子:

Area = Base * Height * (1.0/2.0)

蟒求值(1.0 / 2.0) 第一
此时,由于操作使然为了使括号首先评估。由于1.0和2.0是浮点数而不是整数,因此Python可以执行浮点除法。你得到这个:

Base * Height * (0.5)
= 192 * 0.5
= 96

,它给您您所期望的。

相反:

Base * Height * (1/2)
= Base * Height * (0) # since 1/2 rounds down to 0 in integer division
= 192 * 0
= 0

Carpetsmoker的替代解决方案:

from __future__ import division

该行将为您提供Python2.xhtml" target="_blank">程序中的Python3.x行为/,即使两个值都是整数类型,Python3.x也将运算符接受为浮点除法。这样,在您导入后,/就成为浮点除法运算符。

>>> from __future__ import division
>>> 1/2
0.5


 类似资料:
  • 问题内容: 在 JavaScript中 ,如何获取: 给定整数进入另一个整数的整数倍? 其余的? 问题答案: 对于一些数字和一些除数,将商()和余数()计算为:

  • 问题内容: 标题几乎总结了我想发生的事情。 这就是我所拥有的,虽然程序不会在非正整数上崩溃,但我希望通知用户非正整数基本上是无稽之谈。 并输出: 输出为负: 现在,显然我可以添加一个if来确定是否为负,但是我很好奇是否有一种方法可以将其捕获到该级别,以便利用自动用法打印。 理想情况下,它将打印类似于以下内容的内容: 像这样: 现在我正在这样做,我想我很高兴: 问题答案: 这应该是可以利用的。您仍然

  • 标题几乎概括了我希望发生的事情。 这是我所拥有的,虽然程序不会在非正整数上爆炸,但我希望用户被告知非正整数基本上是无稽之谈。 和输出: 带有负数的输出: 现在,显然我可以添加一个if来确定是否定的,但我很好奇是否有办法在级别捕获它,以便利用自动使用打印。 理想情况下,它会打印类似的东西: 像这样: 现在我正在这么做,我想我很高兴:

  • 问题内容: 这是故意的吗?我强烈记得以前的版本返回了吗?我该怎么办,有没有新的分公司运营商,或者我必须始终选拔? 问题答案: 更改除法运算符

  • 问题内容: 这听起来像一个愚蠢的问题,但是我在Java文档的任何地方都找不到答案。如果我声明两个整数然后除以它们,究竟发生了什么?它们是先转换为除法然后再转换为,还是除法为整数? 另外,纯粹从实验来看,整数除法似乎将答案舍入为零(即和)。我相信这一点对吗? 问题答案: 它们被划分为整数运算。因此简单地将整的整数你多少次装配到。还可以给您除法的余数。所以

  • 问题内容: 在Python和Ruby中,有符号整数除法会截断为负无穷大,而有符号整数模数的第二个操作数具有相同的符号: 但是,在C和Java中,有符号整数除法将截断为0,并且有符号整数模数与第一个操作数具有相同的符号: 用C语言执行与Python和Ruby中相同的除法和模数的最简单,最有效的方法是什么? 问题答案: 在较旧的C标准中没有指定带符号整数除法的舍入方向。但是,在C99中指定将其舍入为零