Python使用/运算符做除法时如何正确判断整数结果且不做舍入
修复方法
别绕弯做除法再判断类型,/返回浮点数、//截断的问题本质是你选的实现思路不对。
判断两个数相除是不是整数,最稳妥的方式是用取模运算%:只要ans % k == 0,就说明ans除以k没有余数,结果必然是整数,全程不涉及浮点数运算,根本不会出现类型不对、数值被截断的问题。
修复后的完整代码如下:
for i in range(len(nums)): ans = 0 ans += nums[i] for j in range(i+1, len(nums)): ans += nums[j] if ans % k == 0: return True return False
补充说明
- 如果你就是想先拿到除法结果再判断,可以对浮点数结果调用
.is_integer()方法,示例写法:
这个方法可以正确识别realans = ans / k if realans.is_integer(): return True7.0是整数值、7.3不是整数,但浮点数存在固有精度问题,数值极大的时候可能出现误判,不推荐作为首选方案。 - 原代码中
realans = 0属于冗余赋值,每次进循环给它赋0之后马上会被后续计算结果覆盖,没有实际逻辑作用,可以直接删掉。
内容的提问来源于stack exchange,提问作者Tom Brooke
相关产品推荐
相关产品推荐

