为了账号安全,请及时绑定邮箱和手机立即绑定

为什么计算式是//呢 而不是/

    def __int__(self):

        return self.p // self.q


正在回答

3 回答

Python里头有3种除法:

  1. 地板除法:用//表示,不管操作数为何种数值类型,总是会舍去小数部分,返回数字序列中比真正的商小的最接近的数字。比如 1//2 = 0, 1.0//2= 0。

  2. 传统除法:用/表示,对整数之间的/,执行地板除,但对有浮点数参与的除法则执行传统意义上的除法。比如 1/2 = 0, 1.0/2=0.5。

  3. 精确除法:如果你想让上面的传统除法,更"传统",你就应该调用 from __future__ import division,这样以后/就真的变成传统意义上的传统除法了。比如,1/2=0.5, 1.0/2=0.5。

注意以上讲的是针对Python 2.6+版本的,对于Python 3+,传统除法被废除了,也就是说只有地板除和精确除法,分别用//和/表示,且不用调用 from __future__ import division。

7 回复 有任何疑惑可以回复我~
#1

学习攻城狮

我试了试,这个代码里面,都是整数的话我用/或者//结果都是一样的。感觉没有区别
2015-05-06 回复 有任何疑惑可以回复我~
#2

学习攻城狮

但是如果使用的浮点数如Rational(5.0,3),无论是/还是//都会报错。。怎么回事
2015-05-06 回复 有任何疑惑可以回复我~
#3

DanDanHang 回复 学习攻城狮

能否把你测试的代码贴一下?
2015-05-06 回复 有任何疑惑可以回复我~
#4

KingEasternSun 提问者

非常感谢!
2015-05-28 回复 有任何疑惑可以回复我~
查看2条回复

这个方法是重载的 __int__()方法,因此需要返回的是一个int类型的值,

// 操作符就是取商的意思,比如7.9 取商的结果就是7

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
python进阶
  • 参与学习       255771    人
  • 解答问题       2946    个

学习函数式、模块和面向对象编程,掌握Python高级程序设计

进入课程

为什么计算式是//呢 而不是/

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信