单位转换工具
单位转换工具提供各种测量系统的综合单位转换功能。这些工具支持多个类别之间的转换,包括温度、长度、重量、时间、容量、面积、速度、数据存储、压力、功率、能量等。
API 变化提示 (v0.5.2+)
从 v0.5.2 版本开始,UnitConverter 的 API 发生了重大变化。不再直接暴露所有转换方法(如 celsius_to_fahrenheit()),而是通过统一的 convert() 方法进行调用。这样做是为了减少 LLM 工具字段的长度,提高性能。
旧版本用法 (v0.5.1 及更早):
result = UnitConverter.celsius_to_fahrenheit(25)
新版本用法 (v0.5.2+):
result = UnitConverter.convert(25, "celsius_to_fahrenheit")
所有转换功能保持不变,只是调用方式有所改变。
概述
UnitConverter 类提供不同测量单位之间的精确转换:
- 温度:摄氏度、华氏度、开尔文
- 长度:米、英尺、英寸、厘米
- 重量:千克、磅
- 时间:秒、分钟、小时
- 容量:升、加仑
- 面积:平方米、平方英尺
- 速度:km/h、mph
- 数据存储:比特、字节、千字节、兆字节
- 压力:帕斯卡、巴、大气压
- 功率:瓦特、千瓦、马力
- 能量:焦耳、卡路里、千瓦时
- 频率:赫兹、千赫兹、兆赫兹
- 燃油经济性:km/L、mpg
- 电学:安培、伏特、欧姆
- 磁学:韦伯、特斯拉、高斯
- 辐射:戈瑞、希沃特
- 光强度:勒克斯、流明
快速开始
from toolregistry_hub import UnitConverter
# 温度转换
celsius = UnitConverter.convert(98.6, "fahrenheit_to_celsius")
print(f"98.6°F = {celsius:.1f}°C")
# 长度转换
feet = UnitConverter.convert(2.5, "meters_to_feet")
print(f"2.5米 = {feet:.2f}英尺")
# 重量转换
pounds = UnitConverter.convert(70, "kilograms_to_pounds")
print(f"70千克 = {pounds:.1f}磅")
# 查看所有可用的转换函数
import json
conversions = json.loads(UnitConverter.list_conversions("all"))
print(f"可用转换: {len(conversions)}个")
# 按类别查看转换函数
temp_conversions = json.loads(UnitConverter.list_conversions("temperature"))
print(f"温度转换: {temp_conversions}")
# 获取特定转换函数的帮助
help_text = UnitConverter.help("celsius_to_fahrenheit")
print(help_text)
# 或者不传参数调用 help(),获取所有转换函数的概览
overview = UnitConverter.help()
print(overview)
转换类别
温度转换
| 从 → 到 |
转换函数名 |
公式/转换因子 |
示例 |
| 摄氏度 → 华氏度 |
celsius_to_fahrenheit |
°F = (°C × 9/5) + 32 |
UnitConverter.convert(25, "celsius_to_fahrenheit") = 77.0 |
| 华氏度 → 摄氏度 |
fahrenheit_to_celsius |
°C = (°F - 32) × 5/9 |
UnitConverter.convert(77, "fahrenheit_to_celsius") = 25.0 |
| 开尔文 → 摄氏度 |
kelvin_to_celsius |
°C = K - 273.15 |
UnitConverter.convert(298.15, "kelvin_to_celsius") = 25.0 |
| 摄氏度 → 开尔文 |
celsius_to_kelvin |
K = °C + 273.15 |
UnitConverter.convert(25, "celsius_to_kelvin") = 298.15 |
长度转换
| 从 → 到 |
方法 |
转换因子 |
示例 |
| 米 → 英尺 |
meters_to_feet() |
1 米 = 3.28084 英尺 |
UnitConverter.meters_to_feet(1) = 3.28084 |
| 英尺 → 米 |
feet_to_meters() |
1 英尺 = 0.3048 米 |
UnitConverter.feet_to_meters(10) = 3.048 |
| 厘米 → 英寸 |
centimeters_to_inches() |
1 厘米 = 0.393701 英寸 |
UnitConverter.centimeters_to_inches(25.4) = 10.0 |
| 英寸 → 厘米 |
inches_to_centimeters() |
1 英寸 = 2.54 厘米 |
UnitConverter.inches_to_centimeters(12) = 30.48 |
重量转换
| 从 → 到 |
方法 |
转换因子 |
示例 |
| 千克 → 磅 |
kilograms_to_pounds() |
1 千克 = 2.20462 磅 |
UnitConverter.kilograms_to_pounds(1) = 2.20462 |
| 磅 → 千克 |
pounds_to_kilograms() |
1 磅 = 0.453592 千克 |
UnitConverter.pounds_to_kilograms(10) = 4.53592 |
时间转换
| 从 → 到 |
方法 |
转换因子 |
示例 |
| 秒 → 分钟 |
seconds_to_minutes() |
1 分钟 = 60 秒 |
UnitConverter.seconds_to_minutes(180) = 3.0 |
| 分钟 → 秒 |
minutes_to_seconds() |
1 分钟 = 60 秒 |
UnitConverter.minutes_to_seconds(2.5) = 150.0 |
容量转换
| 从 → 到 |
方法 |
转换因子 |
示例 |
| 升 → 加仑 |
liters_to_gallons() |
1 加仑 = 3.78541 升 |
UnitConverter.liters_to_gallons(10) = 2.64172 |
| 加仑 → 升 |
gallons_to_liters() |
1 加仑 = 3.78541 升 |
UnitConverter.gallons_to_liters(1) = 3.78541 |
面积转换
| 从 → 到 |
方法 |
转换因子 |
示例 |
| 平方米 → 平方英尺 |
square_meters_to_square_feet() |
1 平方米 = 10.7639 平方英尺 |
UnitConverter.square_meters_to_square_feet(1) = 10.7639 |
| 平方英尺 → 平方米 |
square_feet_to_square_meters() |
1 平方英尺 = 0.092903 平方米 |
UnitConverter.square_feet_to_square_meters(10) = 0.92903 |
速度转换
| 从 → 到 |
方法 |
转换因子 |
示例 |
| km/h → mph |
kmh_to_mph() |
1 英里/小时 = 1.60934 千米/小时 |
UnitConverter.kmh_to_mph(100) = 62.1371 |
| mph → km/h |
mph_to_kmh() |
1 英里/小时 = 1.60934 千米/小时 |
UnitConverter.mph_to_kmh(60) = 96.5606 |
数据存储转换
| 从 → 到 |
方法 |
转换因子 |
示例 |
| 比特 → 字节 |
bits_to_bytes() |
1 字节 = 8 比特 |
UnitConverter.bits_to_bytes(8) = 1.0 |
| 字节 → 千字节 |
bytes_to_kilobytes() |
1 千字节 = 1024 字节 |
UnitConverter.bytes_to_kilobytes(1024) = 1.0 |
| 千字节 → 兆字节 |
kilobytes_to_megabytes() |
1 兆字节 = 1024 千字节 |
UnitConverter.kilobytes_to_megabytes(1024) = 1.0 |
压力转换
| 从 → 到 |
方法 |
转换因子 |
示例 |
| 帕斯卡 → 巴 |
pascal_to_bar() |
1 巴 = 100,000 帕斯卡 |
UnitConverter.pascal_to_bar(100000) = 1.0 |
| 巴 → 大气压 |
bar_to_atm() |
1 大气压 = 1.01325 巴 |
UnitConverter.bar_to_atm(1.01325) = 1.0 |
功率转换
| 从 → 到 |
方法 |
转换因子 |
示例 |
| 瓦特 → 千瓦 |
watts_to_kilowatts() |
1 千瓦 = 1000 瓦特 |
UnitConverter.watts_to_kilowatts(1500) = 1.5 |
| 千瓦 → 马力 |
kilowatts_to_horsepower() |
1 马力 = 0.7457 千瓦 |
UnitConverter.kilowatts_to_horsepower(1) = 1.34102 |
能量转换
| 从 → 到 |
方法 |
转换因子 |
示例 |
| 焦耳 → 卡路里 |
joules_to_calories() |
1 卡路里 = 4.184 焦耳 |
UnitConverter.joules_to_calories(4184) = 1000.0 |
| 卡路里 → 千瓦时 |
calories_to_kilowatt_hours() |
1 千瓦时 = 860,421 卡路里 |
UnitConverter.calories_to_kilowatt_hours(860421) = 1.0 |
频率转换
| 从 → 到 |
方法 |
转换因子 |
示例 |
| 赫兹 → 千赫兹 |
hertz_to_kilohertz() |
1 千赫兹 = 1000 赫兹 |
UnitConverter.hertz_to_kilohertz(1000) = 1.0 |
| 千赫兹 → 兆赫兹 |
kilohertz_to_megahertz() |
1 兆赫兹 = 1000 千赫兹 |
UnitConverter.kilohertz_to_megahertz(1000) = 1.0 |
燃油经济性转换
| 从 → 到 |
方法 |
转换因子 |
示例 |
| km/L → mpg |
km_per_liter_to_mpg() |
1 英里/加仑 = 0.425144 千米/升 |
UnitConverter.km_per_liter_to_mpg(12) = 28.24 |
| mpg → km/L |
mpg_to_km_per_liter() |
1 英里/加仑 = 0.425144 千米/升 |
UnitConverter.mpg_to_km_per_liter(30) = 12.75 |
电学转换
| 从 → 到 |
方法 |
转换因子 |
示例 |
| 安培 → 毫安 |
ampere_to_milliampere() |
1 安培 = 1000 毫安 |
UnitConverter.ampere_to_milliampere(1) = 1000.0 |
| 伏特 → 千伏 |
volt_to_kilovolt() |
1 千伏 = 1000 伏特 |
UnitConverter.volt_to_kilovolt(1000) = 1.0 |
| 欧姆 → 千欧 |
ohm_to_kiloohm() |
1 千欧 = 1000 欧姆 |
UnitConverter.ohm_to_kiloohm(1000) = 1.0 |
磁学转换
| 从 → 到 |
方法 |
公式/转换因子 |
示例 |
| 韦伯 → 特斯拉 |
weber_to_tesla() |
B = Φ/A (A 为平方米面积) |
UnitConverter.weber_to_tesla(1, 1) = 1.0 |
| 高斯 → 特斯拉 |
gauss_to_tesla() |
1 特斯拉 = 10,000 高斯 |
UnitConverter.gauss_to_tesla(10000) = 1.0 |
| 特斯拉 → 韦伯 |
tesla_to_weber() |
Φ = B × A (A 为平方米面积) |
UnitConverter.tesla_to_weber(1, 1) = 1.0 |
| 特斯拉 → 高斯 |
tesla_to_gauss() |
1 特斯拉 = 10,000 高斯 |
UnitConverter.tesla_to_gauss(1) = 10000.0 |
辐射转换
| 从 → 到 |
方法 |
说明 |
示例 |
| 戈瑞 → 希沃特 |
gray_to_sievert() |
对于大多数类型的辐射,1 戈瑞 = 1 希沃特 |
UnitConverter.gray_to_sievert(1) = 1.0 |
光强度转换
| 从 → 到 |
方法 |
公式 |
示例 |
| 勒克斯 → 流明 |
lux_to_lumen() |
流明 = 勒克斯 × 面积(平方米) |
UnitConverter.lux_to_lumen(100, 2) = 200.0 |
| 流明 → 勒克斯 |
lumen_to_lux() |
勒克斯 = 流明 / 面积(平方米) |
UnitConverter.lumen_to_lux(200, 2) = 100.0 |
实际示例
烹饪转换
from toolregistry_hub import UnitConverter
# 食谱转换
oven_temp_f = 350 # 350°F用于烘焙
oven_temp_c = UnitConverter.convert(oven_temp_f, "fahrenheit_to_celsius")
print(f"预热烤箱至 {oven_temp_c:.0f}°C")
# 输出: 预热烤箱至 177°C
# 液体测量
ml_in_cup = 240
cups = 2.5
ml = cups * ml_in_cup
print(f"{cups}杯 = {ml}毫升")
# 输出: 2.5杯 = 600.0毫升
# 重量转换
pounds = 1.5 # 1.5磅肉
kg = UnitConverter.convert(pounds, "pounds_to_kilograms")
print(f"{pounds}磅 = {kg:.3f}千克")
# 输出: 1.5磅 = 0.680千克
旅行转换
from toolregistry_hub import UnitConverter
# 距离转换
kmh = 100 # 限速为km/h
mph = UnitConverter.convert(kmh, "kmh_to_mph")
print(f"限速:{kmh} km/h = {mph:.1f} mph")
# 输出: 限速:100 km/h = 62.1 mph
# 燃油效率
km_per_l = 12 # 12 km/L燃油效率
mpg = UnitConverter.convert(km_per_l, "km_per_liter_to_mpg")
print(f"燃油效率:{km_per_l} km/L = {mpg:.1f} mpg")
# 输出: 燃油效率:12 km/L = 28.2 mpg
# 温度转换
weather_c = 22 # 摄氏度天气
weather_f = UnitConverter.convert(weather_c, "celsius_to_fahrenheit")
print(f"天气:{weather_c}°C = {weather_f}°F")
# 输出: 天气:22°C = 71.6°F
科学计算
from toolregistry_hub import UnitConverter
# 电气计算
voltage_v = 132000 # 高压线路(伏特)
voltage_kv = UnitConverter.convert(voltage_v, "volt_to_kilovolt")
print(f"电压:{voltage_v} V = {voltage_kv} kV")
# 输出: 电压:132000 V = 132.0 kV
# 数据存储
bytes_data = 1024 * 1024 * 500 # 500 MB的字节数
kb_data = UnitConverter.convert(bytes_data, "bytes_to_kilobytes")
mb_data = UnitConverter.convert(kb_data, "kilobytes_to_megabytes")
print(f"数据大小:{bytes_data}字节 = {mb_data} MB")
# 输出: 数据大小:524288000字节 = 500.0 MB
# 压力转换
pressure_bar = 2.5 # 巴压力
pressure_atm = UnitConverter.convert(pressure_bar, "bar_to_atm")
print(f"压力:{pressure_bar} bar = {pressure_atm:.2f} atm")
# 输出: 压力:2.5 bar = 2.47 atm
工程转换
from toolregistry_hub import UnitConverter
# 材料尺寸
length_ft = 10.5 # 英尺长度
length_m = UnitConverter.convert(length_ft, "feet_to_meters")
print(f"长度:{length_ft}英尺 = {length_m:.3f}米")
# 输出: 长度:10.5英尺 = 3.200米
# 面积计算
area_sqm = 150 # 平方米面积
area_sqft = UnitConverter.convert(area_sqm, "square_meters_to_square_feet")
print(f"面积:{area_sqm}平方米 = {area_sqft:.1f}平方英尺")
# 输出: 面积:150平方米 = 1614.6平方英尺
# 功率计算
kilowatts = 186 # 发动机功率,单位为千瓦
horsepower = UnitConverter.convert(kilowatts, "kilowatts_to_horsepower")
print(f"功率:{kilowatts}千瓦 = {horsepower:.1f}马力")
# 输出: 功率:186千瓦 = 249.4马力
# 带额外参数的转换(如光强度转换)
lux_value = 100
area = 2 # 平方米
lumens = UnitConverter.convert(lux_value, "lux_to_lumen", area=area)
print(f"光通量:{lux_value} lux × {area} m² = {lumens} lumens")
# 输出: 光通量:100 lux × 2 m² = 200.0 lumens
重要说明
精度和准确性
- 四舍五入:由于浮点运算,结果可能存在微小的舍入误差
- 转换因子:基于国际标准
- 温度:开尔文使用 273.15 作为与摄氏度的偏移量
面积和体积
- 面积转换:假设为平方单位(m² 到 ft²)
- 体积转换:使用升和加仑进行液体测量
磁学转换
- 面积参数:韦伯 ↔ 特斯拉转换需要面积参数
- 默认面积:未指定时为 1.0 平方米
数据存储
- 二进制系统:使用 1024 为基础的转换(KiB、MiB、GiB)
- 非十进制:与 SI 前缀不同(KB、MB、GB)
转换表
快速参考
| 类别 |
常见转换 |
| 温度 |
0°C = 32°F = 273.15K |
| 长度 |
1 英寸 = 2.54 厘米,1 英里 = 1.609 千米 |
| 重量 |
1 千克 = 2.205 磅,1 盎司 = 28.35 克 |
| 体积 |
1 加仑 = 3.785 升,1 夸脱 = 0.946 升 |
| 速度 |
100 km/h = 62.1 mph |
| 面积 |
1 英亩 = 4047 平方米,1 公顷 = 2.471 英亩 |