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
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Numerinus.UnitConversion" Version="1.0.4" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Numerinus.UnitConversion" Version="1.0.4" />
                    
Directory.Packages.props
<PackageReference Include="Numerinus.UnitConversion" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Numerinus.UnitConversion --version 1.0.4
                    
#r "nuget: Numerinus.UnitConversion, 1.0.4"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Numerinus.UnitConversion@1.0.4
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Numerinus.UnitConversion&version=1.0.4
                    
Install as a Cake Addin
#tool nuget:?package=Numerinus.UnitConversion&version=1.0.4
                    
Install as a Cake Tool

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.

NuGet License: MIT


Features

  • IUnitConversion<TUnit> — Generic interface for all unit converters, enabling consistent and type-safe conversions
  • LengthConverter — 15 metric and imperial length units
  • VolumeConverter — 14 metric and imperial volume units
  • SpeedConverter — 11 units including Mach number and speed of light
  • TemperatureConverter — 8 temperature scales with offset-aware conversions
  • EnergyConverter — 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:

  1. Convert the input value to the base unit
  2. 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 the IUnitConversion<TUnit> interface and unit enums

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 conversions
  • LengthConverter — 15 metric and imperial length units
  • VolumeConverter — 14 metric and imperial volume units
  • SpeedConverter — 11 units including Mach number and speed of light
  • TemperatureConverter — 8 temperature scales with offset-aware conversions
  • EnergyConverter — 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:

  1. Convert the input value to the base unit
  2. 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 the IUnitConversion<TUnit> interface and unit enums

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 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.4 79 4/6/2026
1.0.2 87 4/1/2026
1.0.1 90 3/31/2026
1.0.0 80 3/30/2026