猿问

Python除法

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。在我看来,这是不透明的,但我想情况就是这样的。

原因是什么?


慕尼黑5688855
浏览 788回答 4
4回答

POPMUISE

您正在使用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

慕村225694

你是在里面放整数,所以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

海绵宝宝撒

在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中,仅仅是因为/是一个浮子部门。
随时随地看视频慕课网APP
我要回答