Python2和Python3中除法操作/的不同

X/Y

在3.0版本之前的Python中

>>>1/2

0

即一个整数(无小数部分的数)被另外一个整数除,计算结果的小数部分被截除了,只留下了整数部分

有时候,这个功能比较有用,譬如在做一些需要取位数上的值时可以利用此特性用于循环结束等,但通常,大家用不到这种。

那么,有两种解决方式:

1)用实数(包含小数点的数)而不是整数进行运算

实数在Python中被称为浮点数(Float,或者Float-point number),只要参与运算的数字中有一个是浮点数,则为浮点数运算,运算结果亦为浮点数,也就不会截除小数部分

>>>1.0/2.0

0.5

>>>1/2.0

0.5

>>>1.2/2

0.5

>>>1/2.

0.5

2)让Python改变除法的默认执行方式

可以在程序中加入以下语句,或者在解释器里执行它:

>>>from_future_import division

还有另外一种方法,如果通过命令行(如在Linux系统上)运行Python,可以使用命令开关啊-Qnew

使用以上两种方法。就可以只执行普通的除法运算。

>>>1/2

0.5

此时,单斜线就不再作为整除了,但是Python提供了另外一个用于实现整除的操作符--双斜线:

>>>1//2

0

就算是浮点数,双斜线也会执行整除

>>>1.0/2.0

0

Pytho3.0之后的版本中

在Python3.0中变成真除法(无论任何类型都会保持小数部分,即使整除也会表示为浮点数形式)。 

>>> 3/2

1.5

>>> 3/2.0

1.5

>>> 4/2

2.0

>>> 4/2.0

2.0

时间: 2024-10-15 22:21:46

Python2和Python3中除法操作/的不同的相关文章

有关python2与python3中关于除的不同

有关python2与python3中关于除的不同 python中2版本与3版本关于除的处理还是有一些差异的. 在python 2.7.15中除(/)是向下取整的,即去尾法. 123/10 # 结果 12 128/10 # 结果 12 在python 3中除(/)是相对于2版本精确了一些,例如: print(123/10) # 结果 12.3 原文地址:https://www.cnblogs.com/ZN-225/p/10574748.html

python2 与python3中最大的区别(编码问题bytes&str

1,在python2.x 中是不区分bytes和str类型的,在python3中bytes和str中是区分开的,str的所有操作bytes都支持 python2 中 >>> s = "abcdefg" >>> b = s.encode()    #或者使用下面的方式 >>> b = b"abcdefg">>> type(b)<type 'str'> python3中     #str

python2和python3中的编码问题

开始拾起python,准备使用python3, 造轮子的过程中遇到了编码的问题,又看了一下python3和python2相比变化的部分. 首先说个概念: unicode:在本文中表示用4byte表示的unicode编码,也是python内部使用的字符串编码方式. utf-8:在本文中指最少1byte表示的unicode编码方式 我在使用 if isinstance(key,unicode): key= key.encode('utf-8') 的时候,发现key值被转成了b'foo',b'bar'

Python2和Python3中print的不同点

在Python2和Python3中都提供print()方法来打印信息,但两个版本间的print稍微有差异 主要体现在以下几个方面: 1.python3中print是一个内置函数,有多个参数,而python2中print是一个语法结构: 2.Python2打印时可以不加括号:print 'hello world', Python3则需要加括号   print("hello world") 3.Python2中,input要求输入的字符串必须要加引号,为了避免读取非字符串类型发生的一些行为

每日一读:《关于python2和python3中的range》

官网原话是这么说的:In many ways the object returned by range() behaves as if it is a list, but in fact it isn't. It is an object which returns the successive items of the desired sequence when you iterate over it, but it doesn't really make the list, thus sav

Python2 和 Python3 中默认编码的差异

最近在使用 Python3.4 做一些脚本实现,发现对于编码的处理上和 Python2.6 有很大的不同,就此机会把相关知识做个梳理,方便需要的时候查阅. 先说下概念和差异: 脚本字符编码:就是解释器解释脚本文件时使用的编码格式,可以通过 # -\*- coding: utf-8 -\*- 显式指定解释器字符编码:解释器内部逻辑过程中对 str 类型进行处理时使用的编码格式Python2 中默认把脚步文件使用 ASCII 来处理(历史原因请 Google)Python2 中字符串除了 str 还

nose在python2与python3中的包的自动发现用例的区别

最近在使用python3,同样装了nose,发现自动发现用例总是有问题,如下面的代码结婚 testcase |------ __init__.py |------ test_bb.py test_bb.py中文件为: def test_qq(): pass Python3中: 再使用nose执行testcase提示: ----------------------------------------------------------------------Ran 0 tests in 0.001

由 Python2 和 Python3 中 socket.inet_aton() 实现不同引发的血案

这几天在做一个功能实现的时候,需要把别人用 Python2.6 写好的脚步转成 Python3.4 实现,大部分地方转化都没啥问题,但是在 socket.inet_aton() 转化的过程中出了点问题,花费我不少的精力去解决,先做个记录备忘,同时给后续需要的人做个提醒. 首先说一下,我在解决这个问题前期的思路有点问题,所以请关注最后的总结. 需求目的:把一个 ip 地址使用 socket.inet_aton() 转化后和一个字符串组合,然后算出 MD5. 下面是 Python2.6 的实现代码:

python2和python3中的关键字的区别--keyword模块

一.python3.6中的: 共33个关键字: 通过导入keyword模块,查看python所有的关键字.在ipython中: Python 3.6.0 |Anaconda 4.3.1 (64-bit)| (default, Dec 23 2016, 11:57:41) [MSC v.1900 64 bit (AMD64)]Type "copyright", "credits" or "license" for more information.