为了账号安全,请及时绑定邮箱和手机立即绑定

Python除法

Python除法

慕尼黑5688855 2019-05-31 17:22:00
Python除法我试图将一组从-100到0到10-100之间的数字标准化,但问题只是注意到,即使根本没有变量,这也无法评估我所期望的方式:>>> (20-10) / (100-10)0浮动除法也不起作用:>>> float((20-10) / (100-10))0.0如果分割的任何一方都被抛到一个浮子中,那么它将起作用:>>> (20-10) / float((100-10))0.1111111111111111第一个例子中的每一方都是作为int计算的,这意味着最终的答案将被转换为int。因为0.111小于5,所以它会变成0。在我看来,这是不透明的,但我想情况就是这样的。原因是什么?
查看完整描述

4 回答

?
POPMUISE

TA贡献1765条经验 获得超5个赞

您正在使用Python2.x,其中整数除数将被截断,而不是变成一个浮点数。

>>> 1 / 20

你应该把其中一个float:

>>> float(10 - 20) / (100 - 10)-0.1111111111111111

from __future__ import division,这些力量/为了采用Python3.x的行为,它总是返回一个浮点。

>>> from __future__ import division>>> (10 - 20) / (100 - 10)-0.1111111111111111


查看完整回答
反对 回复 2019-05-31
?
慕村225694

TA贡献1880条经验 获得超4个赞

你是在里面放整数,所以Python会给你一个整数。:

>>> 10 / 900

如果之后将其转换为浮点数,则舍入操作已经完成,换句话说,0整数将始终变为0浮点数。

如果您在除法的两边使用Floats,那么Python将给出您所期望的答案。

>>> 10 / 90.00.1111111111111111

所以在你的情况下:

>>> float(20-10) / (100-10)0.1111111111111111>>> (20-10) / float(100-10)0.1111111111111111


查看完整回答
反对 回复 2019-05-31
?
海绵宝宝撒

TA贡献1809条经验 获得超8个赞

在Python 2.7中,/运算符是整数除法,如果输入是整数:

>>>20/151>>>20.0/15.01.33333333333>>>20.0/151.33333333333

在Python 3.3中,/运算符是浮点除法,即使输入是整数。

>>> 20/151.33333333333>>>20.0/151.33333333333

对于Python 3中的整数除法,我们将使用//接线员。

这个//运算符是Python2.7和Python3.3中的整数除法运算符。

在Python2.7和Python3.3中:

>>>20//151

现在,看看比较

>>>a = 7.0/4.0>>>b = 7/4>>>print a == b

对于上述程序,Python2.7中的输出为false,Python3.3中为True。

在Python2.7 a=1.75和b=1中。

在Python3.3a=1.75和b=1.75中,仅仅是因为/是一个浮子部门。


查看完整回答
反对 回复 2019-05-31
  • 4 回答
  • 0 关注
  • 787 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信