博客
关于我
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中出现Incorrect DECIMAL value: '0' for column '' at row -1错误解决方案
    查看>>
    mysql中出现Unit mysql.service could not be found 的解决方法
    查看>>
    mysql中出现update-alternatives: 错误: 候选项路径 /etc/mysql/mysql.cnf 不存在 dpkg: 处理软件包 mysql-server-8.0的解决方法(全)
    查看>>
    Mysql中各类锁的机制图文详细解析(全)
    查看>>
    MySQL中地理位置数据扩展geometry的使用心得
    查看>>
    Mysql中存储引擎简介、修改、查询、选择
    查看>>
    Mysql中存储过程、存储函数、自定义函数、变量、流程控制语句、光标/游标、定义条件和处理程序的使用示例
    查看>>
    mysql中实现rownum,对结果进行排序
    查看>>
    mysql中对于数据库的基本操作
    查看>>
    Mysql中常用函数的使用示例
    查看>>
    MySql中怎样使用case-when实现判断查询结果返回
    查看>>
    Mysql中怎样使用update更新某列的数据减去指定值
    查看>>
    Mysql中怎样设置指定ip远程访问连接
    查看>>
    mysql中数据表的基本操作很难嘛,由这个实验来带你从头走一遍
    查看>>
    Mysql中文乱码问题完美解决方案
    查看>>
    mysql中的 +号 和 CONCAT(str1,str2,...)
    查看>>
    Mysql中的 IFNULL 函数的详解
    查看>>
    mysql中的collate关键字是什么意思?
    查看>>
    MySql中的concat()相关函数
    查看>>
    mysql中的concat函数,concat_ws函数,concat_group函数之间的区别
    查看>>