UnitHelper
UnitHelper 帮助类
Section titled “UnitHelper 帮助类”UnitHelper 是一个静态帮助类,为计量单位转换提供了丰富的功能,包括长度、货币、质量、角度、进制、面积、体积、温度、速度、热能、功率、压强、力、数据存储、时间等多种单位转换,旨在简化计量单位转换的开发工作,提供完整的单位枚举定义和格式化输出。
- 支持多种计量单位的转换
- 提供完整的单位枚举定义
- 支持货币汇率转换(可更新汇率)
- 支持温度、速度、能量等物理量转换
- 提供数据存储单位转换(B、KB、MB、GB 等)
- 支持时间单位转换
- 提供格式化输出方法
public static partial class UnitHelper长度单位转换
Section titled “长度单位转换”LengthUnit 枚举
Section titled “LengthUnit 枚举”值:
Millimeter: 毫米Centimeter: 厘米Meter: 米Kilometer: 千米Inch: 英寸Foot: 英尺Yard: 码Mile: 英里NauticalMile: 海里
ConvertLength
Section titled “ConvertLength”长度单位转换。
public static double ConvertLength(double value, LengthUnit from, LengthUnit to)参数:
value: 要转换的数值from: 源单位to: 目标单位
返回值:
- 转换后的数值
示例:
var meters = UnitHelper.ConvertLength(100, LengthUnit.Centimeter, LengthUnit.Meter);// meters = 1
var inches = UnitHelper.ConvertLength(1, LengthUnit.Meter, LengthUnit.Inch);// inches ≈ 39.37
var miles = UnitHelper.ConvertLength(1, LengthUnit.Kilometer, LengthUnit.Mile);// miles ≈ 0.621货币单位转换
Section titled “货币单位转换”CurrencyUnit 枚举
Section titled “CurrencyUnit 枚举”值:
CNY: 人民币USD: 美元EUR: 欧元GBP: 英镑JPY: 日元KRW: 韩元AUD: 澳元CAD: 加元CHF: 瑞士法郎HKD: 港币
ConvertCurrency
Section titled “ConvertCurrency”货币单位转换。
public static decimal ConvertCurrency(decimal amount, CurrencyUnit from, CurrencyUnit to)参数:
amount: 要转换的金额from: 源货币单位to: 目标货币单位
返回值:
- 转换后的金额
备注: 汇率数据为示例数据,实际应用中应从 API 获取实时汇率。
示例:
var usd = UnitHelper.ConvertCurrency(100, CurrencyUnit.CNY, CurrencyUnit.USD);// usd ≈ 13.81
var eur = UnitHelper.ConvertCurrency(100, CurrencyUnit.USD, CurrencyUnit.EUR);// eur ≈ 92UpdateCurrencyRate
Section titled “UpdateCurrencyRate”更新货币汇率。
public static void UpdateCurrencyRate(CurrencyUnit currency, decimal rate)参数:
currency: 货币单位rate: 对美元的汇率
示例:
UnitHelper.UpdateCurrencyRate(CurrencyUnit.CNY, 7.20m);GetCurrencySymbol
Section titled “GetCurrencySymbol”获取货币符号。
public static string GetCurrencySymbol(CurrencyUnit currency)参数:
currency: 货币单位
返回值:
- 货币符号
示例:
var symbol = UnitHelper.GetCurrencySymbol(CurrencyUnit.CNY);// symbol = "¥"
var symbol2 = UnitHelper.GetCurrencySymbol(CurrencyUnit.USD);// symbol2 = "$"FormatCurrency
Section titled “FormatCurrency”格式化货币金额。
public static string FormatCurrency(decimal amount, CurrencyUnit currency, int decimalPlaces = 2)参数:
amount: 金额currency: 货币单位decimalPlaces: 小数位数,默认 2
返回值:
- 格式化后的货币字符串
示例:
var formatted = UnitHelper.FormatCurrency(1234.56m, CurrencyUnit.USD);// formatted = "$1,234.56"
var formatted2 = UnitHelper.FormatCurrency(1234.56m, CurrencyUnit.CNY);// formatted2 = "¥1,234.56"质量单位转换
Section titled “质量单位转换”MassUnit 枚举
Section titled “MassUnit 枚举”值:
Milligram: 毫克Gram: 克Kilogram: 千克Ton: 吨Ounce: 盎司Pound: 磅Stone: 英石
ConvertMass
Section titled “ConvertMass”质量单位转换。
public static double ConvertMass(double value, MassUnit from, MassUnit to)参数:
value: 要转换的数值from: 源单位to: 目标单位
返回值:
- 转换后的数值
示例:
var kg = UnitHelper.ConvertMass(1000, MassUnit.Gram, MassUnit.Kilogram);// kg = 1
var pounds = UnitHelper.ConvertMass(1, MassUnit.Kilogram, MassUnit.Pound);// pounds ≈ 2.205角度单位转换
Section titled “角度单位转换”AngleUnit 枚举
Section titled “AngleUnit 枚举”值:
Degree: 度Radian: 弧度Grad: 百分度Minute: 角分Second: 角秒
ConvertAngle
Section titled “ConvertAngle”角度单位转换。
public static double ConvertAngle(double value, AngleUnit from, AngleUnit to)参数:
value: 要转换的数值from: 源单位to: 目标单位
返回值:
- 转换后的数值
示例:
var radians = UnitHelper.ConvertAngle(180, AngleUnit.Degree, AngleUnit.Radian);// radians ≈ 3.14159 (π)
var degrees = UnitHelper.ConvertAngle(Math.PI, AngleUnit.Radian, AngleUnit.Degree);// degrees ≈ 180FormatAngleToDMS
Section titled “FormatAngleToDMS”角度格式化为度分秒格式。
public static string FormatAngleToDMS(double degrees)参数:
degrees: 角度值(度)
返回值:
- 度分秒格式字符串
示例:
var dms = UnitHelper.FormatAngleToDMS(45.5);// dms = "45°30'0\""
var dms2 = UnitHelper.FormatAngleToDMS(90.25);// dms2 = "90°15'0\""ParseDMSToDegrees
Section titled “ParseDMSToDegrees”度分秒格式转换为角度值。
public static double ParseDMSToDegrees(int degrees, int minutes, double seconds)参数:
degrees: 度minutes: 分seconds: 秒
返回值:
- 角度值(度)
示例:
var degrees = UnitHelper.ParseDMSToDegrees(45, 30, 0);// degrees = 45.5NumberBase 枚举
Section titled “NumberBase 枚举”值:
Binary = 2: 二进制Octal = 8: 八进制Decimal = 10: 十进制Hexadecimal = 16: 十六进制
ConvertBase
Section titled “ConvertBase”进制转换。
public static string ConvertBase(string value, NumberBase fromBase, NumberBase toBase)参数:
value: 数值字符串fromBase: 源进制toBase: 目标进制
返回值:
- 转换后的数值字符串
异常:
ArgumentException: value 为空或无效时抛出
示例:
var hex = UnitHelper.ConvertBase("255", NumberBase.Decimal, NumberBase.Hexadecimal);// hex = "FF"
var binary = UnitHelper.ConvertBase("FF", NumberBase.Hexadecimal, NumberBase.Binary);// binary = "11111111"
var octal = UnitHelper.ConvertBase("255", NumberBase.Decimal, NumberBase.Octal);// octal = "377"ConvertFromDecimal
Section titled “ConvertFromDecimal”十进制转换为其他进制。
public static string ConvertFromDecimal(long value, NumberBase toBase)参数:
value: 十进制数值toBase: 目标进制
返回值:
- 转换后的数值字符串
示例:
var hex = UnitHelper.ConvertFromDecimal(255, NumberBase.Hexadecimal);// hex = "FF"
var binary = UnitHelper.ConvertFromDecimal(255, NumberBase.Binary);// binary = "11111111"ConvertToDecimal
Section titled “ConvertToDecimal”其他进制转换为十进制。
public static long ConvertToDecimal(string value, NumberBase fromBase)参数:
value: 数值字符串fromBase: 源进制
返回值:
- 十进制数值
示例:
var decimalValue = UnitHelper.ConvertToDecimal("FF", NumberBase.Hexadecimal);// decimalValue = 255
var decimalValue2 = UnitHelper.ConvertToDecimal("11111111", NumberBase.Binary);// decimalValue2 = 255面积单位转换
Section titled “面积单位转换”AreaUnit 枚举
Section titled “AreaUnit 枚举”值:
SquareMillimeter: 平方毫米SquareCentimeter: 平方厘米SquareMeter: 平方米Hectare: 公顷SquareKilometer: 平方公里SquareInch: 平方英寸SquareFoot: 平方英尺SquareYard: 平方码Acre: 英亩SquareMile: 平方英里Mu: 亩(中国市亩)
ConvertArea
Section titled “ConvertArea”面积单位转换。
public static double ConvertArea(double value, AreaUnit from, AreaUnit to)参数:
value: 要转换的数值from: 源单位to: 目标单位
返回值:
- 转换后的数值
示例:
var sqMeters = UnitHelper.ConvertArea(1, AreaUnit.Hectare, AreaUnit.SquareMeter);// sqMeters = 10000
var acres = UnitHelper.ConvertArea(1, AreaUnit.SquareKilometer, AreaUnit.Acre);// acres ≈ 247.105
var mu = UnitHelper.ConvertArea(1000, AreaUnit.SquareMeter, AreaUnit.Mu);// mu = 1.5体积单位转换
Section titled “体积单位转换”VolumeUnit 枚举
Section titled “VolumeUnit 枚举”值:
CubicMillimeter: 立方毫米CubicCentimeter: 立方厘米CubicMeter: 立方米Liter: 升Milliliter: 毫升CubicInch: 立方英寸CubicFoot: 立方英尺CubicYard: 立方码GallonUS: 美制加仑GallonUK: 英制加仑QuartUS: 美制夸脱PintUS: 美制品脱
ConvertVolume
Section titled “ConvertVolume”体积单位转换。
public static double ConvertVolume(double value, VolumeUnit from, VolumeUnit to)参数:
value: 要转换的数值from: 源单位to: 目标单位
返回值:
- 转换后的数值
示例:
var liters = UnitHelper.ConvertVolume(1, VolumeUnit.GallonUS, VolumeUnit.Liter);// liters ≈ 3.785
var gallons = UnitHelper.ConvertVolume(10, VolumeUnit.Liter, VolumeUnit.GallonUS);// gallons ≈ 2.642温度单位转换
Section titled “温度单位转换”TemperatureUnit 枚举
Section titled “TemperatureUnit 枚举”值:
Celsius: 摄氏度Fahrenheit: 华氏度Kelvin: 开尔文
ConvertTemperature
Section titled “ConvertTemperature”温度单位转换。
public static double ConvertTemperature(double value, TemperatureUnit from, TemperatureUnit to)参数:
value: 要转换的数值from: 源单位to: 目标单位
返回值:
- 转换后的数值
示例:
var fahrenheit = UnitHelper.ConvertTemperature(100, TemperatureUnit.Celsius, TemperatureUnit.Fahrenheit);// fahrenheit = 212
var kelvin = UnitHelper.ConvertTemperature(0, TemperatureUnit.Celsius, TemperatureUnit.Kelvin);// kelvin = 273.15
var celsius = UnitHelper.ConvertTemperature(32, TemperatureUnit.Fahrenheit, TemperatureUnit.Celsius);// celsius = 0FormatTemperature
Section titled “FormatTemperature”格式化温度显示。
public static string FormatTemperature(double value, TemperatureUnit unit, int decimalPlaces = 1)参数:
value: 温度值unit: 温度单位decimalPlaces: 小数位数,默认 1
返回值:
- 格式化后的温度字符串
示例:
var formatted = UnitHelper.FormatTemperature(25.5, TemperatureUnit.Celsius);// formatted = "25.5°C"
var formatted2 = UnitHelper.FormatTemperature(98.6, TemperatureUnit.Fahrenheit);// formatted2 = "98.6°F"速度单位转换
Section titled “速度单位转换”SpeedUnit 枚举
Section titled “SpeedUnit 枚举”值:
MetersPerSecond: 米/秒KilometersPerHour: 公里/小时MilesPerHour: 英里/小时FeetPerSecond: 英尺/秒Knots: 节(海里/小时)
ConvertSpeed
Section titled “ConvertSpeed”速度单位转换。
public static double ConvertSpeed(double value, SpeedUnit from, SpeedUnit to)参数:
value: 要转换的数值from: 源单位to: 目标单位
返回值:
- 转换后的数值
示例:
var kmh = UnitHelper.ConvertSpeed(10, SpeedUnit.MetersPerSecond, SpeedUnit.KilometersPerHour);// kmh = 36
var mph = UnitHelper.ConvertSpeed(100, SpeedUnit.KilometersPerHour, SpeedUnit.MilesPerHour);// mph ≈ 62.137
var knots = UnitHelper.ConvertSpeed(50, SpeedUnit.KilometersPerHour, SpeedUnit.Knots);// knots ≈ 26.999热能单位转换
Section titled “热能单位转换”EnergyUnit 枚举
Section titled “EnergyUnit 枚举”值:
Joule: 焦耳Kilojoule: 千焦Calorie: 卡路里Kilocalorie: 千卡WattHour: 瓦时KilowattHour: 千瓦时BTU: 英热单位ElectronVolt: 电子伏特
ConvertEnergy
Section titled “ConvertEnergy”热能单位转换。
public static double ConvertEnergy(double value, EnergyUnit from, EnergyUnit to)参数:
value: 要转换的数值from: 源单位to: 目标单位
返回值:
- 转换后的数值
示例:
var kcal = UnitHelper.ConvertEnergy(1000, EnergyUnit.Calorie, EnergyUnit.Kilocalorie);// kcal = 1
var kwh = UnitHelper.ConvertEnergy(3600000, EnergyUnit.Joule, EnergyUnit.KilowattHour);// kwh = 1功率单位转换
Section titled “功率单位转换”PowerUnit 枚举
Section titled “PowerUnit 枚举”值:
Watt: 瓦特Kilowatt: 千瓦Horsepower: 公制马力HorsepowerUK: 英制马力
ConvertPower
Section titled “ConvertPower”功率单位转换。
public static double ConvertPower(double value, PowerUnit from, PowerUnit to)示例:
var kw = UnitHelper.ConvertPower(1000, PowerUnit.Watt, PowerUnit.Kilowatt);// kw = 1
var hp = UnitHelper.ConvertPower(100, PowerUnit.Kilowatt, PowerUnit.Horsepower);// hp ≈ 135.962压强单位转换
Section titled “压强单位转换”PressureUnit 枚举
Section titled “PressureUnit 枚举”值:
Pascal: 帕斯卡Kilopascal: 千帕Bar: 巴Atmosphere: 标准大气压MmHg: 毫米汞柱Psi: 磅力/平方英寸
ConvertPressure
Section titled “ConvertPressure”压强单位转换。
public static double ConvertPressure(double value, PressureUnit from, PressureUnit to)示例:
var atm = UnitHelper.ConvertPressure(101325, PressureUnit.Pascal, PressureUnit.Atmosphere);// atm = 1
var psi = UnitHelper.ConvertPressure(1, PressureUnit.Atmosphere, PressureUnit.Psi);// psi ≈ 14.696ForceUnit 枚举
Section titled “ForceUnit 枚举”值:
Newton: 牛顿Kilonewton: 千牛顿Dyne: 达因PoundForce: 磅力KilogramForce: 千克力
ConvertForce
Section titled “ConvertForce”力单位转换。
public static double ConvertForce(double value, ForceUnit from, ForceUnit to)示例:
var kgf = UnitHelper.ConvertForce(9.80665, ForceUnit.Newton, ForceUnit.KilogramForce);// kgf = 1
var lbf = UnitHelper.ConvertForce(1, ForceUnit.KilogramForce, ForceUnit.PoundForce);// lbf ≈ 2.205数据存储单位转换
Section titled “数据存储单位转换”DataStorageUnit 枚举
Section titled “DataStorageUnit 枚举”值:
Byte: 字节Kilobyte: KBMegabyte: MBGigabyte: GBTerabyte: TBPetabyte: PBExabyte: EB
ConvertDataStorage
Section titled “ConvertDataStorage”数据存储单位转换。
public static double ConvertDataStorage(double value, DataStorageUnit from, DataStorageUnit to)参数:
value: 要转换的数值from: 源单位to: 目标单位
返回值:
- 转换后的数值
示例:
var mb = UnitHelper.ConvertDataStorage(1024, DataStorageUnit.Kilobyte, DataStorageUnit.Megabyte);// mb = 1
var gb = UnitHelper.ConvertDataStorage(1024, DataStorageUnit.Megabyte, DataStorageUnit.Gigabyte);// gb = 1
var tb = UnitHelper.ConvertDataStorage(1024, DataStorageUnit.Gigabyte, DataStorageUnit.Terabyte);// tb = 1FormatDataSize
Section titled “FormatDataSize”格式化数据大小(自动选择合适的单位)。
public static string FormatDataSize(double bytes, int decimalPlaces = 2)参数:
bytes: 字节数decimalPlaces: 小数位数,默认 2
返回值:
- 格式化后的数据大小字符串
示例:
var size1 = UnitHelper.FormatDataSize(1024);// size1 = "1.00 KB"
var size2 = UnitHelper.FormatDataSize(1536);// size2 = "1.50 KB"
var size3 = UnitHelper.FormatDataSize(1048576);// size3 = "1.00 MB"时间单位转换
Section titled “时间单位转换”TimeUnit 枚举
Section titled “TimeUnit 枚举”值:
Millisecond: 毫秒Second: 秒Minute: 分钟Hour: 小时Day: 天Week: 周Month: 月(按 30 天计算)Year: 年(按 365 天计算)
ConvertTime
Section titled “ConvertTime”时间单位转换。
public static double ConvertTime(double value, TimeUnit from, TimeUnit to)参数:
value: 要转换的数值from: 源单位to: 目标单位
返回值:
- 转换后的数值
示例:
var minutes = UnitHelper.ConvertTime(1, TimeUnit.Hour, TimeUnit.Minute);// minutes = 60
var hours = UnitHelper.ConvertTime(3600, TimeUnit.Second, TimeUnit.Hour);// hours = 1
var days = UnitHelper.ConvertTime(1, TimeUnit.Week, TimeUnit.Day);// days = 7FormatDuration
Section titled “FormatDuration”格式化时长(自动选择合适的单位)。
public static string FormatDuration(double seconds, int decimalPlaces = 2)参数:
seconds: 秒数decimalPlaces: 小数位数,默认 2
返回值:
- 格式化后的时长字符串
示例:
var duration1 = UnitHelper.FormatDuration(90);// duration1 = "1.50 分钟"
var duration2 = UnitHelper.FormatDuration(3661);// duration2 = "1.02 小时"
var duration3 = UnitHelper.FormatDuration(0.5);// duration3 = "500.00 毫秒"- 单位转换:使用对应的
Convert*方法进行单位转换 - 格式化输出:使用
Format*方法获得友好的输出格式 - 货币转换:注意汇率数据需要定期更新
- 精度问题:浮点数计算可能存在精度误差,建议使用
decimal类型进行货币计算 - 温度转换:温度转换有特殊的计算公式,不能简单地使用比例转换
- 货币汇率为示例数据,实际应用中应从 API 获取实时汇率
- 时间单位转换中,月和年为近似值(30 天/月,365 天/年)
- 数据存储单位使用二进制前缀(1024 进位)
- 角度转换中,弧度与度的转换使用 π 值