数字类型实战——除法:经典的、取整的、真正的——为什么截断很重要?

未匹配的标注

如果在使用系列3,下面是关于除法操作符的小结以供参考:

>>> (5 / 2), (5 / 2.0), (5 / −2.0), (5 / −2) # 3.X 真正的除法
(2.5, 2.5, −2.5, −2.5)
>>> (5 // 2), (5 // 2.0), (5 // −2.0), (5 // −2) # 3.X 向下取整的除法
(2, 2.0, −3.0, −3)
>>> (9 / 3), (9.0 / 3), (9 // 3), (9 // 3.0) # 两种混合
(3.0, 3.0, 3, 3.0)

对系列2的读者,除法工作如下(整数/除法的三个输出和系列3不同):

>>> (5 / 2), (5 / 2.0), (5 / −2.0), (5 / −2) # 2.X 经典除法 (不同)
(2, 2.5, −2.5, −3)
>>> (5 // 2), (5 // 2.0), (5 // −2.0), (5 // −2) # 2.X 向下取整的除法 (相同)
(2, 2.0, −3.0, −3)
>>> (9 / 3), (9.0 / 3), (9 // 3), (9 // 3.0) # 两种混合
(3, 3.0, 3, 3.0)

系列3中/的不截断行为可能会破坏许多系列2的程序。或许是因为C语言的传统方法,许多程序员对整数的除法截断有依赖,必须在那种上下文中学习使用//作为代替。现在应该在所有新的系列2和系列3代码中这么做——在前者中是为了对系列3的兼容性,在后者中是因为系列3中/没有截断的功能。关注在第13章中的一个简单的质数while循环的例子,还有在第4部分末尾的一个相应练习,它展示了可能被这个/改变影响的那种代码。还要对本章中使用过的特殊的from命令保持关注;它在第25章中被深入讨论。

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
讨论数量: 0
发起讨论 只看当前版本


暂无话题~