📜  Python中双除运算符相对于单除运算符的优点

📅  最后修改于: 2022-05-13 01:54:30.608000             🧑  作者: Mango

Python中双除运算符相对于单除运算符的优点

Python中的双除法运算符在除法后返回整数和浮点参数的下限值。

# A Python program to demonstrate use of  
# "//" for both integers and floating points
  
print(5//2)
print(-5//2)
print(5.0//2)

输出:

2
-3
2.0

对于非常大的数字,单除法运算符通常表现异常。考虑以下示例。

示例 1:

# single division
print(1000000002/2)
  
# Gives wrong output
print(int(((10 ** 17) + 2)/2))
  
# Gives Correct output
print(((10 ** 17) + 2)//2)

输出:

500000001.0
50000000000000000
50000000000000001

示例 2:

x = 10000000000000000000006
if int(x / 2) == x // 2:
    print("Hello")
else:
    print("World")

输出:

World

如果单除法运算符表现正常,则输出应该是 Hello,因为 2 正确除法了 x。但是输出是 World 因为 Single Division Operator 和 Double Division Operator 之后的结果不一样

这个事实可以用于程序,例如查找大 n 的前 n 个数字的总和。

n = 10000000000
  
s1 = int(n * (n + 1) / 2)
s2 = n * (n + 1) // 2
  
print("Sum using single division operator : ", s1)
print("Sum using double division operator : ", s2)

输出:

Sum using single division operator :  50000000005000003584
Sum using double division operator :  50000000005000000000

因此用单除法运算符得到的结果是错误的,而用双除法运算符得出的结果是正确的。这是Python中 Double Division Operator 相对于 Single Division Operator 的巨大优势。