如果数字完美除法,则使商成为整数



如果两个数字之间发生完美除法,我希望将结果转换为整数,但如果两个数字之间没有发生完美除法,则不应进行任何更改。 例如,6/2给出的结果3.0。由于这是完美划分,因此3.0应转换为3。另一方面,如果我有14/4,它给出了结果3.5,它应该保持原样,因为完全除法没有发生。

这里所说的完美除法是指a除以b得到一个整数

此函数检查除法是否有余数。如果是这样,则它不是整数。

def divide_and_conquer(a, b):
return a / b if a % b else a // b

以下是有关如何实现这一目标的分步解决方案

# the numbers
num = 34
divisor = 17
# do the division
modula = num//divisor # modulus
quotient = num/divisor # normal division
# check if division is perfect
if modula  == quotient :
result = int(quotient)
else:
result = quotient

在 python 中,你可以使用//来划分整数,并得到一个整数结果。您还可以使用 % 来确定两个数字是否完美相除(% 返回余数,当且仅当两个数字完美相除时,余数始终为零(。要完成您的要求,只需:

a = 6
b = 2
if a % b == 0:
result = a // b
else:
result = a / b

也就是说,您也可以简单地运行标准除法并将结果转换为整数......

result = a / b
if result % 1 == 0:
result = int(result)

但是,在这两种情况下,您可能都希望检查所编码内容的更广泛上下文,因为如果变量有时是一种数据类型,而有时是不同的数据类型,则可能会产生真正的问题 - 最好在每种情况下都将值保留为浮点数,直到您需要将其变为整数为止。

注意:在两个不能完全除法的整数上使用"//"仍然会产生一个整数,因为python会简单地忽略余数。 6//4 = 1, 15//2 = 7.

您可以使用//除法来获取int

def divide(a, b):
return a / b if a % b else a//b
divide(2, 5)   # 0.4 (float)
divide(10, 5)  # 2 (int)

最新更新