python不同版本中浮点除法和整数除法

本文详细解析了Python中浮点除法和整数除法的区别,特别是在Python2.7和Python3.6版本中/和//运算符的行为差异。并介绍了Python的取整方式及其在不同版本中的表现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

python2.7版本

本文针对浮点除法和整数除法做了以下实验:

print 15/10
1
print 15.0/10
1.5
print -15/10
-2
print 15//10
1
print 15.0//10
1.0
print -15//10
-2

实验发现,“/”和“//”是很难被区分的,因为”15/10“和“15//10”、“-15/10”和“-15//10”有一样的结果。为了彻底区分两者,我们在头部声明"from __future__ import division

from __future__ import division
print 15/10
1.5
print 15.0/10
1.5
print -15/10
-1.5
print 15//10
1
print 15.0//10
1.0
print -15//10
-2

声明头部之后,"/"就成为浮点除法,"//“为整型除法(向下取整数,包括负数除法)。

除了以上特性之外,实验还发现"-15/10"和“-15//10”在两种运算的结果均为“-2”

python3.6版本

该python版本中,不需要添加声明"from __future__ import division",自动将"/"运算归为浮点除法,"//"为整数除法。当然,添加声明之后也是一样的运算结果。

print 15/10
1.5
print 15.0/10
1.5
print -15/10
-1.5
print 15//10
1
print 15.0//10
1.0
print -15//10
-2

这里补充一下,python常用的几种取整方式(以下结果来自2.7版本,3.6版本第2、3部分结果为整数)(引用:https://blog.csdn.net/u010457943/article/details/77369764?locationNum=7&fps=1)

1.向下取整

    a = 3.75
    int(a)
    3

2.四舍五入

    a = 3.25; b = 3.75
    round(a); round(b)
    3.0
    4.0

3.向上取整

    import math
    a = 3.25 ; b = 3.75
    math.ceil(a);math.cei(3.75)
    4.0
    4.0

再补充一点,除法的取整 (引用:https://blog.csdn.net/u010388829/article/details/46550383)

除法的取整分为三类:向上取整、向下取整、向零取整。 
1.向上取整:向+∞方向取最接近精确值的整数。在这种取整方式下,5 / 3 = 2, -5 / -3 = 2, -5 / 3 = -1, 5 / -3 = -1 
2.向下取整:向-∞方向取最接近精确值的整数。在这种取整方式下,5 / 3 = 1, -5 / -3 = 1, -5 / 3 = -2, 5 / -3 = -2 
3.向零取整:向0方向取最接近精确值的整数,换言之就是舍去小数部分,因此又称截断取整。在这种取整方式下,5 / 3 = 1, -5 / -3 = 1, -5 / 3 = -1, 5 / -3 = -1

通过观察可以发现,无论是向上取整还是向下取整,(-a)/b==-(a/b)都不一定成立。这给程序设计者带来了极大的麻烦。而对于向零取整,(-a)/b==-(a/b)是成立的,以此,C/C++(包括Java)采用这种取整方式。

而Python采用的是向下取整的方式,具体原因得结合取模运算分析。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值