Numerinus.UnitConversion
1.0.4
Prefix Reserved
dotnet add package Numerinus.UnitConversion --version 1.0.4
NuGet\Install-Package Numerinus.UnitConversion -Version 1.0.4
<PackageReference Include="Numerinus.UnitConversion" Version="1.0.4" />
<PackageVersion Include="Numerinus.UnitConversion" Version="1.0.4" />
<PackageReference Include="Numerinus.UnitConversion" />
paket add Numerinus.UnitConversion --version 1.0.4
#r "nuget: Numerinus.UnitConversion, 1.0.4"
#:package Numerinus.UnitConversion@1.0.4
#addin nuget:?package=Numerinus.UnitConversion&version=1.0.4
#tool nuget:?package=Numerinus.UnitConversion&version=1.0.4
Project Title
Numerinus.UnitConversion
Unit conversion module for the Numerinus mathematical suite. Built on top of Numerinus.Core, this package provides accurate, strongly-typed unit conversions across a range of physical measurement categories.
Features
IUnitConversion<TUnit>— Generic interface for all unit converters, enabling consistent and type-safe conversionsLengthConverter— 15 metric and imperial length unitsVolumeConverter— 14 metric and imperial volume unitsSpeedConverter— 11 units including Mach number and speed of lightTemperatureConverter— 8 temperature scales with offset-aware conversionsEnergyConverter— 15 units spanning SI, electrical, thermal, scientific, and mechanical- All converters use a two-step base unit strategy for accurate multi-step conversions
- Full input validation — rejects
NaN,Infinity, and out-of-range values with descriptive exceptions
Installation
dotnet add package Numerinus.UnitConversion
Length Conversion
Base unit: Meter (m)
Supported Units (LengthEnum)
| Enum Value | Unit |
|---|---|
Nanometer |
Nanometer (nm) |
Micrometer |
Micrometer (µm) |
Millimeter |
Millimeter (mm) |
Centimeter |
Centimeter (cm) |
Decimeter |
Decimeter (dm) |
Meter |
Meter (m) — base unit |
Decameter |
Decameter (dam) |
Hectometer |
Hectometer (hm) |
Kilometer |
Kilometer (km) |
Inch |
Inch (in) |
Foot |
Foot (ft) |
Yard |
Yard (yd) |
Furlong |
Furlong |
Mile |
Mile (mi) |
NauticalMile |
Nautical Mile (nmi) |
Usage
using Numerinus.Core.Enums;
using Numerinus.UnitConversion.Calculators;
var converter = new LengthConverter();
// Kilometers to Miles
double miles = converter.Convert(10, LengthEnum.Kilometer, LengthEnum.Mile);
Console.WriteLine(miles); // ~6.2137
// Feet to Meters
double meters = converter.Convert(100, LengthEnum.Foot, LengthEnum.Meter);
Console.WriteLine(meters); // 30.48
// To base unit (Meter)
double baseValue = converter.ConvertToBaseUnit(5, LengthEnum.Kilometer);
Console.WriteLine(baseValue); // 5000
// From base unit (Meter)
double inches = converter.ConvertFromBaseUnit(1, LengthEnum.Inch);
Console.WriteLine(inches); // ~39.3701
Volume Conversion
Base unit: Cubic Meter (m³)
Supported Units (VolumeEnum)
| Enum Value | Unit |
|---|---|
CubicMillimeter |
Cubic Millimeter (mm³) |
CubicCentimeter |
Cubic Centimeter (cm³) |
CubicDecimeter |
Cubic Decimeter (dm³) |
CubicMeter |
Cubic Meter (m³) — base unit |
CubicKilometer |
Cubic Kilometer (km³) |
Milliliter |
Milliliter (mL) |
Liter |
Liter (L) |
Deciliter |
Deciliter (dL) |
Hectoliter |
Hectoliter (hL) |
Kiloliter |
Kiloliter (kL) |
FluidOunce |
Fluid Ounce (US fl oz) |
Pint |
Pint (US liquid pt) |
Quart |
Quart (US liquid qt) |
Gallon |
Gallon (US liquid gal) |
Usage
using Numerinus.Core.Enums;
using Numerinus.UnitConversion.Calculators;
var converter = new VolumeConverter();
// Liters to Gallons
double gallons = converter.Convert(10, VolumeEnum.Liter, VolumeEnum.Gallon);
Console.WriteLine(gallons); // ~2.6417
// Cubic Meters to Liters
double liters = converter.Convert(1, VolumeEnum.CubicMeter, VolumeEnum.Liter);
Console.WriteLine(liters); // 1000
// Fluid Ounces to Milliliters
double ml = converter.Convert(8, VolumeEnum.FluidOunce, VolumeEnum.Milliliter);
Console.WriteLine(ml); // ~236.588
// To base unit (Cubic Meter)
double baseValue = converter.ConvertToBaseUnit(500, VolumeEnum.Liter);
Console.WriteLine(baseValue); // 0.5
// From base unit (Cubic Meter)
double pints = converter.ConvertFromBaseUnit(1, VolumeEnum.Pint);
Console.WriteLine(pints); // ~2113.38
Speed Conversion
Base unit: Meter per Second (m/s)
Supported Units (SpeedEnum)
| Enum Value | Unit |
|---|---|
MeterPerSecond |
Meter per Second (m/s) — base unit |
KilometerPerHour |
Kilometer per Hour (km/h) |
MeterPerMinute |
Meter per Minute (m/min) |
CentimeterPerSecond |
Centimeter per Second (cm/s) |
MilePerHour |
Mile per Hour (mph) |
FootPerSecond |
Foot per Second (ft/s) |
FootPerMinute |
Foot per Minute (ft/min) |
InchPerSecond |
Inch per Second (in/s) |
Knot |
Knot (nmi/h) |
MachNumber |
Mach Number (≈ 343 m/s at sea level, 20°C) |
SpeedOfLight |
Speed of Light (c = 299,792,458 m/s) |
Usage
using Numerinus.Core.Enums;
using Numerinus.UnitConversion.Calculators;
var converter = new SpeedConverter();
// Kilometers per Hour to Miles per Hour
double mph = converter.Convert(100, SpeedEnum.KilometerPerHour, SpeedEnum.MilePerHour);
Console.WriteLine(mph); // ~62.1371
// Meters per Second to Knots
double knots = converter.Convert(10, SpeedEnum.MeterPerSecond, SpeedEnum.Knot);
Console.WriteLine(knots); // ~19.4384
// Miles per Hour to Mach Number
double mach = converter.Convert(767, SpeedEnum.MilePerHour, SpeedEnum.MachNumber);
Console.WriteLine(mach); // ~1.0 (approximately Mach 1)
// To base unit (m/s)
double ms = converter.ConvertToBaseUnit(120, SpeedEnum.KilometerPerHour);
Console.WriteLine(ms); // ~33.3333
// From base unit (m/s)
double ftps = converter.ConvertFromBaseUnit(10, SpeedEnum.FootPerSecond);
Console.WriteLine(ftps); // ~32.8084
Temperature Conversion
Base unit: Celsius (°C)
⚠️ Temperature conversions involve offsets, not just scaling. The standard base unit multiply/divide strategy does not apply here. All units convert through Celsius as the intermediate step.
Supported Units (TemperatureEnum)
| Enum Value | Unit |
|---|---|
Celsius |
Celsius (°C) — base unit |
Fahrenheit |
Fahrenheit (°F) |
Kelvin |
Kelvin (K) |
Rankine |
Rankine (°R) |
Delisle |
Delisle (°De) |
Newton |
Newton (°N) |
Reaumur |
Réaumur (°Ré) |
Romer |
Rømer (°Rø) |
Conversion Formulas
| From | To Celsius |
|---|---|
| Fahrenheit | (°F − 32) × 5/9 |
| Kelvin | K − 273.15 |
| Rankine | (°R − 491.67) × 5/9 |
| Delisle | 100 − °De × 2/3 |
| Newton | °N × 100/33 |
| Réaumur | °Ré × 5/4 |
| Rømer | (°Rø − 7.5) × 40/21 |
Usage
using Numerinus.Core.Enums;
using Numerinus.UnitConversion.Calculators;
var converter = new TemperatureConverter();
// Celsius to Fahrenheit
double f = converter.Convert(100, TemperatureEnum.Celsius, TemperatureEnum.Fahrenheit);
Console.WriteLine(f); // 212
// Kelvin to Celsius
double c = converter.Convert(373.15, TemperatureEnum.Kelvin, TemperatureEnum.Celsius);
Console.WriteLine(c); // 100
// Fahrenheit to Kelvin
double k = converter.Convert(32, TemperatureEnum.Fahrenheit, TemperatureEnum.Kelvin);
Console.WriteLine(k); // 273.15
Energy Conversion
Base unit: Joule (J)
Supported Units (EnergyEnum)
| Enum Value | Unit |
|---|---|
Joule |
Joule (J) — base unit |
Kilojoule |
Kilojoule (kJ) |
Megajoule |
Megajoule (MJ) |
Gigajoule |
Gigajoule (GJ) |
WattHour |
Watt-Hour (Wh) |
KilowattHour |
Kilowatt-Hour (kWh) |
MegawattHour |
Megawatt-Hour (MWh) |
Calorie |
Calorie (cal) |
Kilocalorie |
Kilocalorie (kcal) |
BritishThermalUnit |
British Thermal Unit (BTU) |
Electronvolt |
Electronvolt (eV) |
KiloElectronvolt |
Kiloelectronvolt (keV) |
MegaElectronvolt |
Megaelectronvolt (MeV) |
FootPound |
Foot-Pound (ft·lbf) |
Erg |
Erg |
Usage
using Numerinus.Core.Enums;
using Numerinus.UnitConversion.Calculators;
var converter = new EnergyConverter();
// Kilowatt-Hours to Joules
double joules = converter.Convert(1, EnergyEnum.KilowattHour, EnergyEnum.Joule);
Console.WriteLine(joules); // 3,600,000
// Joules to Calories
double cal = converter.Convert(100, EnergyEnum.Joule, EnergyEnum.Calorie);
Console.WriteLine(cal); // ~23.9006
// Kilocalories to Kilojoules
double kj = converter.Convert(2000, EnergyEnum.Kilocalorie, EnergyEnum.Kilojoule);
Console.WriteLine(kj); // 8368
// Electronvolts to Joules
double j = converter.Convert(1, EnergyEnum.Electronvolt, EnergyEnum.Joule);
Console.WriteLine(j); // 1.602176634e-19
// To base unit (Joule)
double baseValue = converter.ConvertToBaseUnit(1, EnergyEnum.KilowattHour);
Console.WriteLine(baseValue); // 3,600,000
// From base unit (Joule)
double btu = converter.ConvertFromBaseUnit(1055.05585, EnergyEnum.BritishThermalUnit);
Console.WriteLine(btu); // ~1.0
Architecture
All converters implement the generic IUnitConversion<TUnit> interface from Numerinus.Core:
public interface IUnitConversion<TUnit> where TUnit : Enum
{
double Convert(double value, TUnit fromUnit, TUnit toUnit);
double ConvertToBaseUnit(double value, TUnit fromUnit);
double ConvertFromBaseUnit(double baseValue, TUnit toUnit);
}
Conversions follow a two-step base unit strategy:
- Convert the input value to the base unit
- Convert the base unit to the target unit
This ensures accuracy across any combination of units without requiring an N×N conversion table.
Dependencies
Numerinus.Core— For theIUnitConversion<TUnit>interface and unit enums
Related Modules
| Package | Description |
|---|---|
Numerinus.Core |
Foundational types and interfaces |
Numerinus.Algebra |
Polynomial, rational functions, and linear systems |
Numerinus.Statistics |
Statistical operations and distributions |
Numerinus.Geometry |
Geometric types and transformations |
Support & Maintenance
Numerinus is an actively maintained suite of .NET libraries. To ensure updates, bug fixes, and new converters continue to ship, consider supporting the project:
License
Copyright (c) 2026 Sunil Chaware. Licensed under the MIT License. https://opensource.org/licenses/MIT
Features
IUnitConversion<TUnit>— Generic interface for all unit converters, enabling consistent and type-safe conversionsLengthConverter— 15 metric and imperial length unitsVolumeConverter— 14 metric and imperial volume unitsSpeedConverter— 11 units including Mach number and speed of lightTemperatureConverter— 8 temperature scales with offset-aware conversionsEnergyConverter— 15 units spanning SI, electrical, thermal, scientific, and mechanical- All converters use a two-step base unit strategy for accurate multi-step conversions
- Full input validation — rejects
NaN,Infinity, and out-of-range values with descriptive exceptions
Installation
Length Conversion
Base unit: Meter
Supported Units (LengthEnum)
| Enum Value | Unit |
|---|---|
Nanometer |
Nanometer (nm) |
Micrometer |
Micrometer (µm) |
Millimeter |
Millimeter (mm) |
Centimeter |
Centimeter (cm) |
Decimeter |
Decimeter (dm) |
Meter |
Meter (m) — base unit |
Decameter |
Decameter (dam) |
Hectometer |
Hectometer (hm) |
Kilometer |
Kilometer (km) |
Inch |
Inch (in) |
Foot |
Foot (ft) |
Yard |
Yard (yd) |
Furlong |
Furlong |
Mile |
Mile (mi) |
NauticalMile |
Nautical Mile (nmi) |
Usage
using Numerinus.Core.Enums; using Numerinus.UnitConversion.Calculators; var converter = new LengthConverter();
// Kilometers to Miles double miles = converter.Convert(10, LengthEnum.Kilometer, LengthEnum.Mile); Console.WriteLine(miles); // ~6.2137
// Feet to Meters double meters = converter.Convert(100, LengthEnum.Foot, LengthEnum.Meter); Console.WriteLine(meters); // 30.48
// To base unit (Meter) double baseValue = converter.ConvertToBaseUnit(5, LengthEnum.Kilometer); Console.WriteLine(baseValue); // 5000
// From base unit (Meter) double inches = converter.ConvertFromBaseUnit(1, LengthEnum.Inch); Console.WriteLine(inches); // ~39.3701
Volume Conversion
Base unit: Cubic Meter
Supported Units (VolumeEnum)
| Enum Value | Unit |
|---|---|
CubicMillimeter |
Cubic Millimeter (mm³) |
CubicCentimeter |
Cubic Centimeter (cm³) |
CubicDecimeter |
Cubic Decimeter (dm³) |
CubicMeter |
Cubic Meter (m³) — base unit |
CubicKilometer |
Cubic Kilometer (km³) |
Milliliter |
Milliliter (mL) |
Liter |
Liter (L) |
Deciliter |
Deciliter (dL) |
Hectoliter |
Hectoliter (hL) |
Kiloliter |
Kiloliter (kL) |
FluidOunce |
Fluid Ounce (US fl oz) |
Pint |
Pint (US liquid pt) |
Quart |
Quart (US liquid qt) |
Gallon |
Gallon (US liquid gal) |
Usage
using Numerinus.Core.Enums; using Numerinus.UnitConversion.Calculators; var converter = new VolumeConverter();
// Liters to Gallons double gallons = converter.Convert(10, VolumeEnum.Liter, VolumeEnum.Gallon); Console.WriteLine(gallons); // ~2.6417
// Cubic Meters to Liters double liters = converter.Convert(1, VolumeEnum.CubicMeter, VolumeEnum.Liter); Console.WriteLine(liters); // 1000
// Fluid Ounces to Milliliters double ml = converter.Convert(8, VolumeEnum.FluidOunce, VolumeEnum.Milliliter); Console.WriteLine(ml); // ~236.588
// To base unit (Cubic Meter) double baseValue = converter.ConvertToBaseUnit(500, VolumeEnum.Liter); Console.WriteLine(baseValue); // 0.5
// From base unit (Cubic Meter) double pints = converter.ConvertFromBaseUnit(1, VolumeEnum.Pint); Console.WriteLine(pints); // ~2113.38
Speed
| Enum Value | Unit |
|---|---|
MeterPerSecond |
Meter per Second (m/s) — base unit |
KilometerPerHour |
Kilometer per Hour (km/h) |
MeterPerMinute |
Meter per Minute (m/min) |
CentimeterPerSecond |
Centimeter per Second (cm/s) |
MilePerHour |
Mile per Hour (mph) |
FootPerSecond |
Foot per Second (ft/s) |
FootPerMinute |
Foot per Minute (ft/min) |
InchPerSecond |
Inch per Second (in/s) |
Knot |
Knot (nmi/h) |
MachNumber |
Mach Number (≈ 343 m/s at sea level, 20°C) |
SpeedOfLight |
Speed of Light (c = 299,792,458 m/s) |
Usage
using Numerinus.Core.Enums; using Numerinus.UnitConversion.Calculators;
var converter = new SpeedConverter();
// Kilometers per Hour to Miles per Hour double mph = converter.Convert(100, SpeedEnum.KilometerPerHour, SpeedEnum.MilePerHour); Console.WriteLine(mph); // ~62.1371
// Meters per Second to Knots double knots = converter.Convert(10, SpeedEnum.MeterPerSecond, SpeedEnum.Knot); Console.WriteLine(knots); // ~19.4384
// Miles per Hour to Mach Number double mach = converter.Convert(767, SpeedEnum.MilePerHour, SpeedEnum.MachNumber); Console.WriteLine(mach); // ~1.0 (approximately Mach 1)
// To base unit (m/s) double ms = converter.ConvertToBaseUnit(120, SpeedEnum.KilometerPerHour); Console.WriteLine(ms); // 33.3333
// From base unit (m/s) double ftps = converter.ConvertFromBaseUnit(10, SpeedEnum.FootPerSecond); Console.WriteLine(ftps); // ~32.8084
Temperature Conversion
Base unit: Celsius (°C)
⚠️ Temperature conversions involve offsets, not just scaling. The standard base unit multiply/divide strategy does not apply here. All units convert through Celsius as the intermediate step.
Supported Units (TemperatureEnum)
| Enum Value | Unit |
|---|---|
Celsius |
Celsius (°C) — base unit |
Fahrenheit |
Fahrenheit (°F) |
Kelvin |
Kelvin (K) |
Rankine |
Rankine (°R) |
Delisle |
Delisle (°De) |
Newton |
Newton (°N) |
Reaumur |
Réaumur (°Ré) |
Romer |
Rømer (°Rø) |
Conversion Formulas
| From | To Celsius |
|---|---|
| Fahrenheit | (°F − 32) × 5/9 |
| Kelvin | K − 273.15 |
| Rankine | (°R − 491.67) × 5/9 |
| Delisle | 100 − °De × 2/3 |
| Newton | °N × 100/33 |
| Réaumur | °Ré × 5/4 |
| Rømer | (°Rø − 7.5) × 40/21 |
Usage
using Numerinus.Core.Enums;
using Numerinus.UnitConversion.Calculators;
var converter = new TemperatureConverter();
// Celsius to Fahrenheit
double f = converter.Convert(100, TemperatureEnum.Celsius, TemperatureEnum.Fahrenheit);
Console.WriteLine(f); // 212
// Kelvin to Celsius
double c = converter.Convert(373.15, TemperatureEnum.Kelvin, TemperatureEnum.Celsius);
Console.WriteLine(c); // 100
// Fahrenheit to Kelvin
double k = converter.Convert(32, TemperatureEnum.Fahrenheit, TemperatureEnum.Kelvin);
Console.WriteLine(k); // 273.15
Energy Conversion
Base unit: Joule (J)
Supported Units (EnergyEnum)
| Enum Value | Unit |
|---|---|
Joule |
Joule (J) — base unit |
Kilojoule |
Kilojoule (kJ) |
Megajoule |
Megajoule (MJ) |
Gigajoule |
Gigajoule (GJ) |
WattHour |
Watt-Hour (Wh) |
KilowattHour |
Kilowatt-Hour (kWh) |
MegawattHour |
Megawatt-Hour (MWh) |
Calorie |
Calorie (cal) |
Kilocalorie |
Kilocalorie (kcal) |
BritishThermalUnit |
British Thermal Unit (BTU) |
Electronvolt |
Electronvolt (eV) |
KiloElectronvolt |
Kiloelectronvolt (keV) |
MegaElectronvolt |
Megaelectronvolt (MeV) |
FootPound |
Foot-Pound (ft·lbf) |
Erg |
Erg |
Usage
using Numerinus.Core.Enums;
using Numerinus.UnitConversion.Calculators;
var converter = new EnergyConverter();
// Kilowatt-Hours to Joules
double joules = converter.Convert(1, EnergyEnum.KilowattHour, EnergyEnum.Joule);
Console.WriteLine(joules); // 3,600,000
// Joules to Calories
double cal = converter.Convert(100, EnergyEnum.Joule, EnergyEnum.Calorie);
Console.WriteLine(cal); // ~23.9006
// Kilocalories to Kilojoules
double kj = converter.Convert(2000, EnergyEnum.Kilocalorie, EnergyEnum.Kilojoule);
Console.WriteLine(kj); // 8368
// Electronvolts to Joules
double j = converter.Convert(1, EnergyEnum.Electronvolt, EnergyEnum.Joule);
Console.WriteLine(j); // 1.602176634e-19
// To base unit (Joule)
double baseValue = converter.ConvertToBaseUnit(1, EnergyEnum.KilowattHour);
Console.WriteLine(baseValue); // 3,600,000
// From base unit (Joule)
double btu = converter.ConvertFromBaseUnit(1055.05585, EnergyEnum.BritishThermalUnit);
Console.WriteLine(btu); // ~1.0
Architecture
All converters implement the generic IUnitConversion<TUnit> interface from Numerinus.Core:
public interface IUnitConversion<TUnit> where TUnit : Enum { double Convert(double value, TUnit fromUnit, TUnit toUnit); double ConvertToBaseUnit(double value, TUnit fromUnit); double ConvertFromBaseUnit(double baseValue, TUnit toUnit); }
Conversions follow a two-step base unit strategy:
- Convert the input value to the base unit
- Convert the base unit to the target unit
This ensures accuracy across any combination of units without requiring an N×N conversion table.
Dependencies
Numerinus.Core— For theIUnitConversion<TUnit>interface and unit enums
Related Modules
| Package | Description |
|---|---|
Numerinus.Core |
Foundational types and interfaces |
Numerinus.Algebra |
Polynomial, rational functions, and linear systems |
Numerinus.Statistics |
Statistical operations and distributions |
Numerinus.Geometry |
Geometric types and transformations |
Support & Maintenance
Numerinus is an actively maintained suite of .NET libraries. To ensure updates, bug fixes, and new converters continue to ship, consider supporting the project:
License
Copyright (c) 2026 Sunil Chaware. Licensed under the MIT License. https://opensource.org/licenses/MIT
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net9.0
- Numerinus.Core (>= 1.0.8)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.