Python 3.2 中的截断除法
Python 3.2 中整数除法
//
比浮点数除法/
更快吗?如果我知道我将仅使用整数,我是否应该选择//
而不是默认为/
?如何在 Python 3.2 中获得整数截断行为?
<代码>1/2 = 0
-1/2 = 0
谢谢。
Is integer floor division
//
faster than float division/
in Python 3.2? If I know I'm going to be working with integers only, should I favour//
instead of defaulting to/
?How do I get integer truncation behaviour in Python 3.2?
1/2 = 0
-1/2 = 0
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
测试一下以确保它是正确的。已经很晚了,我正在睡觉时做数学。
事实上,不要这样做。在查看是否可以对 int 进行子类化以进行截断除法(也不要这样做(而且它不起作用))时,我想到
int()
本身会截断实数,从而导致这是一个相当愚蠢的包装。
因此,只需使用浮点除法,并使用
int()
截断它:这使您非常接近您想要的中缀表示法。
这个故事的寓意是……不要让你的朋友在昏昏欲睡时编码。
Test it to make sure it's right. It's late and I'm doing math while sleepy.
Actually, don't do that. While seeing if I could subclass int to do truncated division (don't do that either (also, it didn't work)), it occurred to me that
int()
itself will truncate reals, resulting in this:Which is a rather foolish wrapper.
So, just use float division, and truncate it with
int()
:This gets you pretty close to the infix notation you desired.
The moral of this story is... don't let your friends code while drowsy.
这是我经过一番尝试和错误后得到的截断除法。这可以处理任意大的整数。
我在寻找截断的 divmod(商余数)时发现了这一点。我所拥有的是类似的:
Here's what I have for truncation division after some trial and error. This handles arbitrarily large integers.
I found this in looking for a truncated divmod (quotient-remainder). What I have is analogous: