本文共 3143 字,大约阅读时间需要 10 分钟。
如何实现四舍五入功能,不使用Python内建函数
在编写代码时,确保处理所有情况,包括正数、负数、整数和小数。以下是实现四舍五入的步骤说明:
检查输入有效性:首先,确认source_num和precise_num是否为有效数字和整数。
分割整数与小数部分:将source_num转换为字符串,分割为整数和小数部分。
处理保留位数:
四舍五入处理:
返回结果:将处理后的整数和小数部分组合,返回四舍五入后的结果。
以下是优化后的Python代码,实现四舍五入功能:
def func(source_num, precise_num): # 检查输入是否为有效数字 try: if not isinstance(source_num, (int, float)) or not isinstance(precise_num, int): raise ValueError("输入错误,source_num必须是数字,precise_num必须是整数") if precise_num < 0: raise ValueError("保留位数不能为负数") except ValueError: print("输入错误,source_num必须是数字,precise_num必须是整数") return # 处理特殊情况,保留0位小数 if precise_num == 0: if isinstance(source_num, int): # 处理整数四舍五入 if source_num == 0: return "0" num_str = str(source_num) if len(num_str) == 1: return num_str last_digit = num_str[-1] if int(last_digit) >= 5: return str(int(num_str) + 1) else: return num_str else: # 处理浮点数,保留0位小数 num_str = str(source_num) if '.' not in num_str: num_str += ".0" parts = num_str.split('.') integer_part = parts[0] if len(integer_part) == 1: integer_part += "0" else: last_digit = integer_part[-1] if int(last_digit) >= 5: integer_part = str(int(integer_part) + 1) if len(integer_part) > 1: return integer_part else: return integer_part + ".0" else: return integer_part + ".0" else: # 处理保留precise_num位小数 num_str = str(source_num) if '.' not in num_str: num_str += ".0" parts = num_str.split('.') integer_part = parts[0] decimal_part = parts[1] # 保留precise_num位小数 decimal_length = len(decimal_part) if decimal_length > precise_num: # 截断后面多余的部分,并检查是否需要进位 decimal_part = decimal_part[:precise_num] if decimal_part[-1] >= '5': integer_part = str(int(integer_part) + 1) if len(integer_part) > 1: integer_part = integer_part[:-1] decimal_part = decimal_part[:-1] if len(decimal_part) < precise_num: decimal_part = decimal_part.ljust(precise_num, '0') elif decimal_length < precise_num: # 补零 decimal_part = decimal_part.ljust(precise_num, '0') else: # 保留precise_num位,小数位数等于precise_num pass # 组合结果 result = f"{integer_part}.{decimal_part}" return result# 测试函数try: source_num = float(input("请输入数值:")) precise_num = int(input("请输入保留位数:")) result = func(source_num, precise_num) print(f"四舍五入后的结果为:{result}")except ValueError: print("输入错误,请检查输入是否为有效数字和正整数保留位数。")
这个代码实现了四舍五入功能,能够处理整数和浮点数,保留指定的位数,并正确处理进位情况。
转载地址:http://tulfk.baihongyu.com/