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

    你可能感兴趣的文章
    logstash mysql 准实时同步到 elasticsearch
    查看>>
    Luogu2973:[USACO10HOL]赶小猪
    查看>>
    mabatis 中出现&lt; 以及&gt; 代表什么意思?
    查看>>
    Mac book pro打开docker出现The data couldn’t be read because it is missing
    查看>>
    MAC M1大数据0-1成神篇-25 hadoop高可用搭建
    查看>>
    mac mysql 进程_Mac平台下启动MySQL到完全终止MySQL----终端八步走
    查看>>
    Mac OS 12.0.1 如何安装柯美287打印机驱动,刷卡打印
    查看>>
    MangoDB4.0版本的安装与配置
    查看>>
    Manjaro 24.1 “Xahea” 发布!具有 KDE Plasma 6.1.5、GNOME 46 和最新的内核增强功能
    查看>>
    mapping文件目录生成修改
    查看>>
    MapReduce程序依赖的jar包
    查看>>
    mariadb multi-source replication(mariadb多主复制)
    查看>>
    MariaDB的简单使用
    查看>>
    MaterialForm对tab页进行隐藏
    查看>>
    Member var and Static var.
    查看>>
    memcached高速缓存学习笔记001---memcached介绍和安装以及基本使用
    查看>>
    memcached高速缓存学习笔记003---利用JAVA程序操作memcached crud操作
    查看>>
    Memcached:Node.js 高性能缓存解决方案
    查看>>
    memcache、redis原理对比
    查看>>
    memset初始化高维数组为-1/0
    查看>>