博客
关于我
python3 week4
阅读量:795 次
发布时间:2023-03-08

本文共 3143 字,大约阅读时间需要 10 分钟。

如何实现四舍五入功能,不使用Python内建函数

在编写代码时,确保处理所有情况,包括正数、负数、整数和小数。以下是实现四舍五入的步骤说明:

  • 检查输入有效性:首先,确认source_num和precise_num是否为有效数字和整数。

  • 分割整数与小数部分:将source_num转换为字符串,分割为整数和小数部分。

  • 处理保留位数

    • 如果保留位数为0,处理整数部分,判断最后一位是否需要进位。
    • 如果保留位数大于0,处理小数部分,根据保留位数截取或补零。
  • 四舍五入处理

    • 根据保留位数,检查小数部分的最后一位是否大于等于5,决定是否需要进位。
    • 处理进位时,注意整数部分的变化。
  • 返回结果:将处理后的整数和小数部分组合,返回四舍五入后的结果。

  • 以下是优化后的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/

    你可能感兴趣的文章
    mysql 取表中分组之后最新一条数据 分组最新数据 分组取最新数据 分组数据 获取每个分类的最新数据
    查看>>
    MySQL 命令和内置函数
    查看>>
    mysql 四种存储引擎
    查看>>
    MySQL 在并发场景下的问题及解决思路
    查看>>
    MySQL 基础架构
    查看>>
    MySQL 基础模块的面试题总结
    查看>>
    MySQL 备份 Xtrabackup
    查看>>
    mYSQL 外键约束
    查看>>
    mysql 多个表关联查询查询时间长的问题
    查看>>
    mySQL 多个表求多个count
    查看>>
    mysql 多字段删除重复数据,保留最小id数据
    查看>>
    MySQL 多表联合查询:UNION 和 JOIN 分析
    查看>>
    MySQL 大数据量快速插入方法和语句优化
    查看>>
    mysql 如何给SQL添加索引
    查看>>
    mysql 字段区分大小写
    查看>>
    mysql 字段合并问题(group_concat)
    查看>>
    mysql 字段类型类型
    查看>>
    MySQL 字符串截取函数,字段截取,字符串截取
    查看>>
    MySQL 存储引擎
    查看>>
    mysql 存储过程 注入_mysql 视图 事务 存储过程 SQL注入
    查看>>