我是编程和Python的初学者。我正在做一些简单的数学运算。正如我们所知,Python解释器中的3/2
给出了1
。但-3/2
给出-2
。你能指出这里的区别吗?3/2和-3/2有什么区别?
回答
在Python 2,/
执行整数除法。这意味着如果结果不是整数,则结果为将舍入为下一个整数值。当该值为负时,这自然会变成更大幅度的负数。
直观上,整数除法的结果就是浮点除法的结果mathematical floor。为此,整数除法通常也被称为floor division。
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
。
我认为四舍五入通常被称为“floor”+1,因为它比我更好地解释它 – 2014-11-04 17:06:46
值得注意的是'-'是一元运算符,与分割运算符绑定更紧密。如果是相反的话,结果将是相同的。 – Dunes 2014-11-04 17:10:16
在Python 3.4.2中,'int(-1.5)'返回'-1'。 – 2014-11-05 16:16:20
-3/2 == -1.5 , floor(-1.5) = -2
同样
3/2 == 1.5 , floor(1.5) = 1
Python有两个分部操作员。
/
//
这里,//
将总是圆的结果为最接近的整数(不论操作数的类型的)。这被称为地板分区。但/
将四舍五入到最接近的整数,如果两个操作数都是整数,则表示其中的任何一个操作数都是浮点数,则进行实际除法。
的差异可以与本实施例中可以清楚地理解,
>>> 11/4
2
>>> 11.0/4
2.75
>>> 11//4
2
>>> 11.0//4.0
2.0
从Python Documentation on floor division引用,
数学除法该回合下来到最接近的整数。地板分区操作员是
//
。例如,表达式11 // 4
评估为2
,与浮法真正划分返回的结果相反。 请注意(-11) // 4
是-3
,因为那是-2.75
向下舍入为。见PEP 238。
引用文本的最后一行是您实际问题的答案。
地板划分和舍入到最近的整数是两个不等价的概念。在Python 3.4.2中,'5 // 3'将产生1,'round(5/3)'将产生2.'// //'运算符总是向负无穷大转。 – 2014-11-05 16:20:08
- 1. [BITS 32]声明和BITS 32之间有什么区别?
- 2. keras.layer.Dense(32)和keras.layer.SimpleRNN(32)之间的区别?
- 3. 为什么32位和64位numpy/pandas之间有区别
- 4. .NET在32位或64位系统上有什么区别?
- 5. 什么是适合32位和64位“32位”的术语
- 6. 32位和64位的Java CRC32实现有何区别
- 7. 16位和32位应用程序的最终区别是什么?
- 8. 编程微控制器8位,16位,32位时有什么区别?
- 9. 为什么int 32位?
- 10. 为什么sizeof(string)== 32?
- 11. 有什么区别`和$(Bash中有什么区别?
- 12. ==和===有什么区别?
- 13. ==和===有什么区别?
- 14. 有什么区别? :和||
- 15. ==和===有什么区别?
- 16. '=='和'==='有什么区别?
- 17. `&`和`ref`有什么区别?
- 18. 有什么区别:。!和:r!?
- 19. | 0和~~有什么区别?
- 20. Appender和〜有什么区别?
- 21. 32位和64位操作系统和处理器(Intel架构和Windows)之间有什么区别
- 22. 具有32/16位分区的处理器上的64/32位分区
- 23. CreateRemoteThread 32-> 64和/或64-> 32
- 24. 32位和64位Excel 2007之间的区别
- 25. Qt moc.exe - 32位和64位版本的区别?
- 26. xtype和别名有什么区别?
- 27. 64位文件系统与32位文件系统最大区别是什么
- 28. 有什么区别
- 29. 有什么区别
- 30. 有什么区别?
'3/2' - > 1.5,向下取整为1.'-3/2' - > -1.5,向下取整至-2。 – 2014-11-04 17:04:35
另请参阅http://stackoverflow.com/a/19518866/190597,解释为什么Python向负无穷发展。 – unutbu 2014-11-04 17:07:39