首页 > 解决方案 > 计算两个排序数组的中位数时将浮点数转换为整数的问题

问题描述

e在2 和4的情况下,第 15 到 17 行的代码返回 3.0 q,但我想要 3。

for i in array2:
        array1.append(i)
        arr=array1
        arr.sort()
        n = len(arr)
        if n % 2 == 0:
            z = n // 2
            e = int(arr[z])
            q = int(arr[z - 1])
            if(e+q%2==0):
                ans=int((e + q) // 2) #i did int() and also used // while dividing
                return ans #returnin 3.0 instead of 3
            else:
                ans = (e + q) / 2
                return ans
        else:
            z = n // 2
            ans = arr[z]
            return ans

标签: pythonarraysfloating-pointintegermedian

解决方案


你有一个优先顺序问题:

e+q%2==0

被评估为:

e+(q%2)==0

如果 e 不为零,这将永远不会成立。因此,您正在进入该else子句并执行浮点除法。你会想要使用:

(e+q) % 2 == 0

推荐阅读