Python round函数使用异常求助:整数正常浮点无输出如何解决
Python round函数多类型输入适配解决方案
问题根因
- 写法1故障点:
- 对
self.elt强制调用int()转换,若self.elt为浮点类型且业务不需要取整时,会先截断小数部分导致计算结果不符合预期 - 存在冗余的两层
float()嵌套,不必要的转换操作会提升异常触发概率 - 无输出基本是因为类型转换、属性读取时抛出未捕获异常,导致程序静默终止,没有后续返回结果
- 对
- 写法2故障点:
- 没有做输入合法性校验,若
self.pro为None、非数字格式字符串等无法转换为浮点的类型时,会直接抛出异常导致无返回结果
- 没有做输入合法性校验,若
调整后的代码实现
写法1适配方案
如果业务不需要对self.elt取整,直接使用如下代码,可自动兼容整数、浮点输入:
try: # 统一将输入转换为浮点类型,天然适配整数、浮点输入 inst_val = float(self.inst) elt_val = float(self.elt) res = round(inst_val - elt_val, 1) # 捕获三类常见异常,避免程序直接崩溃无输出 except (TypeError, ValueError, AttributeError) as e: # 可根据业务需要自定义异常处理逻辑,比如赋值默认值 res = 0.0 print(f"计算异常: {e}")
如果业务确实需要对self.elt取整后再计算,保留int(elt_val)转换逻辑即可,其他部分同上。
写法2适配方案
try: pro_val = float(self.pro) res1 = round(2 * pro_val, 1) except (TypeError, ValueError, AttributeError) as e: res1 = 0.0 print(f"计算异常: {e}")
内容的提问来源于stack exchange,提问作者Developer23
相关产品推荐
相关产品推荐

