您能帮我弄清楚这个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) / 2
或192 / 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中指定将其舍入为零