Python中如何判断一个数是否在另一个数的1%范围内?
判断数值是否在另一数值的1%范围内的简便实现
你需要的是判断num_a是否处于num_b的±1%相对误差区间内,原函数仅计算百分比占比,无法直接完成判断。以下是两种简便实现方式:
方法一:基于相对误差(推荐,适配正负数值)
这种方式通过计算两个数的相对误差是否≤1%来判断,能正确处理num_b为负数的情况:
def is_within_one_percent(num_a, num_b): # 处理num_b为0的边界情况,可根据实际需求调整逻辑 if num_b == 0: return num_a == 0 # 若num_a也为0则认为在范围内,否则返回False relative_error = abs(num_a - num_b) / abs(num_b) return relative_error <= 0.01
测试你的示例:
- 当
num_a=99.3,num_b=100时,相对误差为(100-99.3)/100=0.007,≤0.01,返回True,符合预期。 - 若
num_b=-100,num_a=-99.3,相对误差同样为0.007,返回True,逻辑正确。
方法二:基于区间判断(仅适用于正数场景)
如果确定num_b始终为正数,也可以直接计算区间范围进行判断:
def is_within_one_percent(num_a, num_b): lower = num_b * 0.99 upper = num_b * 1.01 return lower <= num_a <= upper
该方法逻辑直观,但当num_b为负数时,区间的上下限会颠倒,导致判断错误,因此仅适合正数场景。
内容的提问来源于stack exchange,提问作者sam
相关产品推荐
相关产品推荐

