繁体   English   中英

3/2和-3/2之间有什么区别?

[英]What is the difference between 3/2 and -3/2?

我是编程和Python的初学者。 我正在做一些简单的数学运算。 因此,我们知道,Python解释器中的3/2给出了1 但是-3/2-2 你能指出这里的区别吗?

在Python 2中, /执行整数除法。 这意味着结果(如果它不是整数) 向下舍入到下一个整数值。 当值为负时,这自然会转向更大幅度的负数。

直观地说,整数除法的结果只是浮点除法结果的数学平台 因此,整数除法通常也称为平面划分

floor(1.5)  # Returns 1.0
floor(-1.5)  # Returns -2.0

可以通过在模块顶部放置from __future__ import division来改变Python 2中的这种行为。 此导入将使/运算符仅指示真正的除法(浮点除法),并使用//运算符启用显式换层(整数除法)。 这些约定是Python 3中的标准。

from __future__ import division

print(3/2)  # 1.5
print(3//2)  # 1

正如@Dunes在评论中指出的那样,值得注意的是-具有比/更高的优先级,因此-3/2相当于(-3)/2而不是-(3/2) 如果首先应用除法,则结果确实为-1

-3/2 == -1.5 , floor(-1.5)  = -2

同样

 3/2 == 1.5 , floor(1.5)  = 1

Python有两个除法运算符。

  1. /

  2. //

这里, //将始终将结果舍入到最接近的整数(与操作数的类型无关)。 这称为地板划分 但是/将四舍五入到最接近的整数,如果两个操作数都是整数,那么如果其中一个操作数是浮点数,它就会进行实际除法。

通过这个例子可以清楚地理解这种差异,

>>> 11/4
2
>>> 11.0/4
2.75
>>> 11//4
2
>>> 11.0//4.0
2.0

楼层划分的 Python文档引用,

向下舍入到最接近整数的数学除法。 地面划分运营商是// 例如,表达式11 // 4计算结果为2 ,与float true division返回的2.7 5相比。 注意(-11) // 4-3因为向下舍入-2.75 PEP 238

引用文本中的最后一行将是您实际问题的答案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM