鹤壁市纤凝网

电子秤的单位换算逻辑:克、千克、磅等计量方式的算法实现

2025-07-20 13:13:01 浏览次数:1
详细信息

电子秤单位换算逻辑实现

下面是一个完整的电子秤单位换算实现,支持克(g)、千克(kg)和磅(lb)之间的相互转换。

class WeightConverter:
    # 定义单位转换常量
    GRAMS_PER_KILOGRAM = 1000.0
    GRAMS_PER_POUND = 453.59237  # 精确转换系数

    @staticmethod
    def convert(value, from_unit, to_unit):
        """
        执行重量单位转换

        参数:
        value -- 要转换的数值
        from_unit -- 原始单位 ('g', 'kg', 'lb')
        to_unit -- 目标单位 ('g', 'kg', 'lb')

        返回:
        转换后的数值
        """
        # 统一单位格式为小写
        from_unit = from_unit.lower()
        to_unit = to_unit.lower()

        # 定义支持的重量单位
        valid_units = ['g', 'kg', 'lb']
        if from_unit not in valid_units or to_unit not in valid_units:
            raise ValueError(f"无效的单位。支持的格式: {valid_units}")

        # 如果源单位和目标单位相同,直接返回值
        if from_unit == to_unit:
            return value

        # 转换为克作为中间单位
        if from_unit == 'g':
            grams = value
        elif from_unit == 'kg':
            grams = value * WeightConverter.GRAMS_PER_KILOGRAM
        elif from_unit == 'lb':
            grams = value * WeightConverter.GRAMS_PER_POUND

        # 从克转换为目标单位
        if to_unit == 'g':
            return grams
        elif to_unit == 'kg':
            return grams / WeightConverter.GRAMS_PER_KILOGRAM
        elif to_unit == 'lb':
            return grams / WeightConverter.GRAMS_PER_POUND

# 测试函数
def test_weight_converter():
    # 测试用例
    test_cases = [
        (1000, 'g', 'kg', 1.0),
        (1, 'kg', 'g', 1000.0),
        (1, 'kg', 'lb', 2.20462),
        (1, 'lb', 'g', 453.59237),
        (500, 'g', 'lb', 1.10231),
        (2.20462, 'lb', 'kg', 1.0),
        (1000, 'g', 'g', 1000.0),
    ]

    print("测试结果:")
    print("{:<10} {:<5} -> {:<5} | {:<10} | {:<10} | {:<10}".format(
        "数值", "从", "到", "预期", "实际", "状态"))

    for value, from_unit, to_unit, expected in test_cases:
        try:
            result = WeightConverter.convert(value, from_unit, to_unit)
            # 四舍五入到5位小数进行比较
            passed = abs(round(result, 5) - round(expected, 5)) < 0.00001
            status = "通过" if passed else "失败"
            print("{:<10.5f} {:<5} -> {:<5} | {:<10.5f} | {:<10.5f} | {:<10}".format(
                value, from_unit, to_unit, expected, result, status))
        except Exception as e:
            print(f"测试失败: {e}")

# 用户交互示例
if __name__ == "__main__":
    print("电子秤单位换算器")
    print("支持单位: g(克), kg(千克), lb(磅)")

    while True:
        try:
            value = float(input("\n输入重量值: "))
            from_unit = input("输入原始单位 (g/kg/lb): ").strip().lower()
            to_unit = input("输入目标单位 (g/kg/lb): ").strip().lower()

            result = WeightConverter.convert(value, from_unit, to_unit)
            print(f"\n转换结果: {value} {from_unit} = {result:.6f} {to_unit}")

        except ValueError as ve:
            print(f"输入错误: {ve}")
        except Exception as e:
            print(f"发生错误: {e}")

        # 询问用户是否继续
        another = input("\n是否继续转换? (y/n): ").lower()
        if another != 'y':
            print("感谢使用电子秤单位换算器!")
            break

单位换算逻辑说明

转换关系

转换方法

转换公式

功能特点

支持三种重量单位:克(g)、千克(kg)、磅(lb) 使用国际标准换算系数(1磅 = 453.59237克) 包含自动测试用例验证转换准确性 提供用户友好的交互界面 异常处理机制确保程序健壮性 单位不区分大小写

使用示例

电子秤单位换算器
支持单位: g(克), kg(千克), lb(磅)

输入重量值: 500
输入原始单位 (g/kg/lb): g
输入目标单位 (g/kg/lb): lb

转换结果: 500 g = 1.102311 lb

是否继续转换? (y/n): n
感谢使用电子秤单位换算器!

这个实现考虑了电子秤实际应用中的精度要求,使用了国际标准的换算系数,并通过测试用例验证了转换的准确性。

相关推荐