博客
关于我
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/

    你可能感兴趣的文章
    Mysql5.6主从复制-基于binlog
    查看>>
    MySQL5.6忘记root密码(win平台)
    查看>>
    MySQL5.6的Linux安装shell脚本之二进制安装(一)
    查看>>
    MySQL5.6的zip包安装教程
    查看>>
    mysql5.7 for windows_MySQL 5.7 for Windows 解压缩版配置安装
    查看>>
    Webpack 基本环境搭建
    查看>>
    mysql5.7 安装版 表不能输入汉字解决方案
    查看>>
    MySQL5.7.18主从复制搭建(一主一从)
    查看>>
    MySQL5.7.19-win64安装启动
    查看>>
    mysql5.7.19安装图解_mysql5.7.19 winx64解压缩版安装配置教程
    查看>>
    MySQL5.7.37windows解压版的安装使用
    查看>>
    mysql5.7免费下载地址
    查看>>
    mysql5.7命令总结
    查看>>
    mysql5.7安装
    查看>>
    mysql5.7性能调优my.ini
    查看>>
    MySQL5.7新增Performance Schema表
    查看>>
    Mysql5.7深入学习 1.MySQL 5.7 中的新增功能
    查看>>
    Webpack 之 basic chunk graph
    查看>>
    Mysql5.7版本单机版my.cnf配置文件
    查看>>
    mysql5.7的安装和Navicat的安装
    查看>>