首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Python中使用整数除法

在Python中使用整数除法
EN

Stack Overflow用户
提问于 2014-02-14 00:04:11
回答 2查看 1.8K关注 0票数 1

考虑一下Python部门:

基数= 12.0

高度= 16

面积= 1/2 *基础*高度

解决方案显示了这一点

面积=(基*高)/2;

令我困惑的是,1/2将是浮动的,而Python只显示0,而不是0.5。为什么解决方案在这种情况下使用/2?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-14 00:06:17

Python2.7自动使用/运算符作为整数(整数)除法,它总是生成一个整数。

例如,

1/2 =0

3/4 =0

100/30 =3

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

如下所示:

代码语言:javascript
运行
复制
Area = 1.0/2 * Base * Height # 1.0 is a float type, 1 is an integer type

结果与您预期的不同,因为Python使用整数除法和操作顺序来计算表达式。

如果用Python计算16 * 12 / 2,则Python将其解释为(16 * 12) / 2192 / 2 = 96

如果计算1/2 * 16 * 12,Python将其解释为(((1/2) * 16) * 12) = (0 * 16) * 12

进一步的示例:

代码语言:javascript
运行
复制
Area = Base * Height * (1.0/2.0)

Python这次首先计算(1.0/2.0) ,因为操作顺序要求首先计算括号。因为1.0和2.0是浮点数而不是整数,所以Python可以执行浮点除法。你明白这个:

代码语言:javascript
运行
复制
Base * Height * (0.5)
= 192 * 0.5
= 96

这给了你你所期望的。

相反:

代码语言:javascript
运行
复制
Base * Height * (1/2)
= Base * Height * (0) # since 1/2 rounds down to 0 in integer division
= 192 * 0
= 0

卡佩特吸烟者的替代解决方案:

代码语言:javascript
运行
复制
from __future__ import division

这一行将在Python2.x程序中给出Python3.x的行为,Python 3.x接受/操作符作为浮点除法,即使这两个值都是整数类型。因此,在导入此操作之后,/将成为浮点除法操作符。

代码语言:javascript
运行
复制
>>> from __future__ import division
>>> 1/2
0.5
票数 3
EN

Stack Overflow用户

发布于 2014-02-14 00:58:12

整数除法是一个人的位置上的剩余部分被简单地丢弃的地方。将7分成3,我们将得到3堆2,剩下一堆,因此:

代码语言:javascript
运行
复制
7 / 3 = 2

Python有两种常用的数字类型:整数(只能表示整数)和浮点数(用来表示十进制数)。传统上,在许多编程语言(C、Java等)中,对相同类型的两个对象执行基本操作(如+-*/ )将为您提供另一个该类型的对象。如果它们是不同的,那么其中一个对象将安全地http://en.wikipedia.org/wiki/Type_conversion到更通用的表单。这通常导致一个不能表示分数的整数被转换为浮点数,而浮点数可以。然后将这两个浮子分开,产生另一个浮子。

因此,在Python2中,当您使用带有两个整数的运算符/时,结果将是一个整数。1/20.5,但是小数部分被丢弃了,所以留给您的是0

但是,在Python3 / 被修改中,总是要转换为浮点数,从而导致真正的除法。1/2 = 0.52/1 = 2.0。对于新程序员来说,这是“预期的”行为,可以为现有的程序员提供更干净的代码。在Python2中,可以通过在脚本顶部添加一个未来进口来模拟这种新行为:

代码语言:javascript
运行
复制
from __future__ import division

如果您确实希望在Python或3.x中使用截断除法,那么就会有一个新的2.5+操作符来模仿旧的/

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21768286

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档