A modern .NET library for effortless unit conversions with physics-based dimensional operations.
22 measurement types, 80+ physical constants, fluent API, and 100% type-safe.
usingMetricly.Core;
var distance = 100.Meters();
Console.WriteLine(distance.ToFeet());
Complete Documentation
Everything you need to master Metricly
Basic Conversions
Metricly provides a fluent API for creating and converting measurements.
Use extension methods to create values, then convert them to any compatible unit.
Perform natural arithmetic operations on measurements. The library ensures type safety
and automatic unit handling.
usingMetricly.Core;
// Addition and subtractionvar total = 1.Kilometers() + 500.Meters();
Console.WriteLine(total.ToKilometers()); // 1.5var remaining = 42.Kilometers() - 10.Kilometers();
Console.WriteLine(remaining.ToKilometers()); // 32// Multiplication and division by scalarsvar triple = 5.Meters() * 3;
Console.WriteLine(triple.ToMeters()); // 15var half = 10.Kilograms() / 2;
Console.WriteLine(half.ToKilograms()); // 5// Ratio calculationsvar ratio = 100.Kilometers() / 50.Kilometers();
Console.WriteLine(ratio); // 2.0// Comparison operatorsif (100.Meters() > 50.Meters())
{
Console.WriteLine("100m is greater");
}
Dimensional Operations
Metricly v0.1.0 introduces physics-based dimensional operations. Perform real-world
calculations
using extension methods that enforce dimensional correctness at compile time.
Kinematics
usingMetricly.Core;
usingMetricly.Core.Operations;
// Speed = Distance / Timevar distance = 100.Meters();
var time = 10.Seconds();
var speed = distance.ToSpeed(time);
Console.WriteLine($"Speed: {speed.ToKilometersPerHour()} km/h");
// Distance = Speed × Timevar speed2 = 60.KilometersPerHour();
var time2 = 2.Hours();
var distance2 = speed2.ToDistance(time2);
Console.WriteLine($"Distance: {distance2.ToKilometers()} km");
// Acceleration = Speed / Timevar finalSpeed = 20.MetersPerSecond();
var accelerationTime = 5.Seconds();
var acceleration = finalSpeed.ToAcceleration(accelerationTime);
Console.WriteLine($"Acceleration: {acceleration.ToMetersPerSecondSquared()} m/s²");
Dynamics
usingMetricly.Core;
usingMetricly.Core.Operations;
usingMetricly.Core.Constants;
// Force = Mass × Acceleration (F = ma)var mass = 10.Kilograms();
var gravity = PhysicalConstants.StandardGravity;
var force = mass.ToForce(gravity);
Console.WriteLine($"Force: {force.ToNewtons()} N"); // 98.1 N// Work = Force × Distancevar pushForce = 100.Newtons();
var pushDistance = 5.Meters();
var work = pushForce.ToEnergy(pushDistance);
Console.WriteLine($"Work: {work.ToJ()} J"); // 500 J// Torque = Force × Lever Armvar wrenchForce = 50.Newtons();
var leverArm = 0.3.Meters();
var torque = wrenchForce.ToTorque(leverArm);
Console.WriteLine($"Torque: {torque.ToNewtonMeters()} N⋅m");
Electricity (Ohm's Law)
usingMetricly.Core;
usingMetricly.Core.Operations;
// Voltage = Current × Resistance (V = I × R)var current = 2.Amperes();
var resistance = 10.Ohms();
var voltage = current.ToVoltage(resistance);
Console.WriteLine($"Voltage: {voltage.ToVolts()} V"); // 20 V// Current = Voltage / Resistance (I = V / R)var batteryVoltage = 12.Volts();
var circuitResistance = 100.Ohms();
var circuitCurrent = batteryVoltage.ToCurrent(circuitResistance);
Console.WriteLine($"Current: {circuitCurrent.ToMilliamperes()} mA");
// Power = Voltage × Current (P = V × I)var power = voltage.ToPower(current);
Console.WriteLine($"Power: {power.ToWatts()} W");
Geometry
usingMetricly.Core;
usingMetricly.Core.Operations;
// Area = Length × Widthvar length = 10.Meters();
var width = 5.Meters();
var area = length.ToArea(width);
Console.WriteLine($"Area: {area.ToSquareMeters()} m²"); // 50 m²// Volume = Area × Heightvar floorArea = 50.SquareMeters();
var height = 3.Meters();
var volume = floorArea.ToVolume(height);
Console.WriteLine($"Volume: {volume.ToCubicMeters()} m³"); // 150 m³
Complete Dimensional Operations Table
Category
Formula
Method
Example
Kinematics
Speed = Distance / Time
distance.ToSpeed(time)
100m.ToSpeed(10s)
Distance = Speed × Time
speed.ToDistance(time)
10mps.ToDistance(5s)
Acceleration = Speed / Time
speed.ToAcceleration(time)
20mps.ToAcceleration(5s)
Dynamics
Force = Mass × Acceleration
mass.ToForce(acceleration)
10kg.ToForce(9.81mps²)
Work = Force × Distance
force.ToEnergy(distance)
100N.ToEnergy(5m)
Torque = Force × Lever
force.ToTorque(lever)
50N.ToTorque(0.3m)
Electricity
Voltage = Current × Resistance
current.ToVoltage(resistance)
2A.ToVoltage(10Ω)
Current = Voltage / Resistance
voltage.ToCurrent(resistance)
12V.ToCurrent(100Ω)
Power = Voltage × Current
voltage.ToPower(current)
12V.ToPower(2A)
Geometry
Area = Length × Width
length.ToArea(width)
10m.ToArea(5m)
Volume = Area × Height
area.ToVolume(height)
50m².ToVolume(3m)
Other
Density = Mass / Volume
mass.ToDensity(volume)
1000kg.ToDensity(1m³)
Pressure = Force / Area
force.ToPressure(area)
1000N.ToPressure(0.1m²)
Power = Energy / Time
energy.ToPower(time)
1000J.ToPower(10s)
Energy Calculations
usingMetricly.Core;
usingMetricly.Core.Operations;
usingMetricly.Core.Constants;
// Kinetic Energy: KE = ½mv²var mass = 1000.Kilograms();
var speed = 20.MetersPerSecond();
var ke = DimensionalOperations.CalculateKineticEnergy(mass, speed);
Console.WriteLine($"Kinetic Energy: {ke.TokJ()} kJ");
// Potential Energy: PE = mghvar height = 10.Meters();
var g = PhysicalConstants.StandardGravity;
var pe = DimensionalOperations.CalculatePotentialEnergy(mass, g, height);
Console.WriteLine($"Potential Energy: {pe.TokJ()} kJ");
Physical Constants
Metricly v0.1.0 includes 80+ fundamental physical constants. Access them through the
PhysicalConstants class for accurate scientific calculations.
Universal Constants
usingMetricly.Core.Constants;
// Speed of Lightvar c = PhysicalConstants.SpeedOfLight; // 299,792,458 m/s// Gravitational Constantvar G = PhysicalConstants.GravitationalConstant; // 6.67430×10⁻¹¹ N⋅m²/kg²// Planck Constantvar h = PhysicalConstants.PlanckConstant; // 6.62607015×10⁻³⁴ J⋅s// Calculate time for light to travel from Sun to Earthvar sunDistance = PhysicalConstants.AstronomicalUnit;
var lightTime = sunDistance.ToTime(c);
Console.WriteLine($"Sun to Earth: {lightTime.ToMinutes():F2} minutes");
Constants Categories
Universal
SpeedOfLight - c = 299,792,458 m/s
GravitationalConstant - G
PlanckConstant - h
Electromagnetic
ElementaryCharge - e
MagneticConstant - μ₀
ElectricConstant - ε₀
Atomic & Quantum
AvogadroConstant - Nₐ
BoltzmannConstant - k
ElectronMass
ProtonMass
BohrRadius
Gravity & Astronomy
StandardGravity - g = 9.80665 m/s²
EarthMass
SolarMass
AstronomicalUnit - AU
LightYear
Thermodynamic
GasConstant - R
AbsoluteZero - 0 K
WaterDensity
StandardTemperature
StandardPressure
Planck Units
PlanckLength
PlanckTime
PlanckMass
PlanckTemperature
Real-World Example
usingMetricly.Core;
usingMetricly.Core.Operations;
usingMetricly.Core.Constants;
// Calculate escape velocity from Earthvar earthMass = PhysicalConstants.EarthMass;
var earthRadius = PhysicalConstants.EarthRadius;
var G = PhysicalConstants.GravitationalConstant;
// v = √(2GM/r)var escapeVelocity = Math.Sqrt(
2 * G.BaseValue * earthMass.BaseValue / earthRadius.BaseValue
);
Console.WriteLine($"Escape velocity: {escapeVelocity:F0} m/s");
Console.WriteLine($"That's {(escapeVelocity / 1000):F1} km/s");
Measurement Types
Metricly v0.1.0 supports 22 different measurement types covering physics, engineering,
computing, and everyday conversions.
// Calculate trip time and fuel consumptionvar distance = 350.Kilometers();
var speed = 110.KilometersPerHour();
var fuelEfficiency = 15.KmPerLiter();
var travelTime = distance / speed.ToKilometersPerHour();
var fuelNeeded = distance.ToKilometers() / fuelEfficiency.ToKmPerLiter();
Console.WriteLine($"Distance: {distance.ToMiles():F1} miles");
Console.WriteLine($"Travel time: {travelTime:F1} hours");
Console.WriteLine($"Fuel needed: {fuelNeeded:F1} L");
Electrical Circuit Analysis
Physics
usingMetricly.Core.Operations;
// Circuit with voltage source and resistorsvar voltage = 12.Volts();
var resistor1 = 100.Ohms();
var resistor2 = 200.Ohms();
// Total resistance (series)var totalResistance = resistor1 + resistor2;
// Calculate current (Ohm's Law: I = V / R)var current = voltage.ToCurrent(totalResistance);
Console.WriteLine($"Current: {current.ToMilliamperes():F2} mA");
// Calculate power dissipation (P = V × I)var power = voltage.ToPower(current);
Console.WriteLine($"Power: {power.ToWatts():F3} W");
Projectile Motion
Physics
usingMetricly.Core.Operations;
usingMetricly.Core.Constants;
// Calculate projectile motionvar initialSpeed = 20.MetersPerSecond();
var mass = 1.Kilograms();
var g = PhysicalConstants.StandardGravity;
// Calculate kinetic energyvar ke = DimensionalOperations.CalculateKineticEnergy(mass, initialSpeed);
Console.WriteLine($"Kinetic Energy: {ke.ToJ()} J");
// Maximum height: h = v²/(2g)var maxHeight = (initialSpeed.BaseValue * initialSpeed.BaseValue) /
(2 * g.BaseValue);
Console.WriteLine($"Max height: {maxHeight:F2} m");
File Download Calculator
Computing
// Calculate download timevar fileSize = 4.7.GB();
var downloadSpeed = 100.MegabitsPerSecond();
var fileSizeMb = fileSize.ToMB();
var speedMBps = downloadSpeed.ToMegabytesPerSecond();
var timeSeconds = fileSizeMb / speedMBps;
var timeMinutes = timeSeconds / 60;
Console.WriteLine($"File size: {fileSize.ToGiB():F2} GiB");
Console.WriteLine($"Speed: {speedMBps:F1} MB/s");
Console.WriteLine($"ETA: {timeMinutes:F1} minutes");
Weather Station
Science
// Process weather datavar temperature = 22.Celsius();
var pressure = 1013.Pascal();
var windSpeed = 15.KilometersPerHour();
Console.WriteLine("=== Weather Report ===");
Console.WriteLine($"Temperature: {temperature.ToCelsius():F1}°C / {temperature.ToFahrenheit():F1}°F");
Console.WriteLine($"Pressure: {pressure.ToAtmospheres():F2} atm");
Console.WriteLine($"Wind: {windSpeed.ToMilesPerHour():F1} mph");
// Check for comfortable conditionsif (temperature >= 18.Celsius() && temperature <= 24.Celsius())
{
Console.WriteLine("Comfortable temperature!");
}
Home Energy Monitor
Utilities
usingMetricly.Core.Operations;
// Calculate monthly energy consumptionvar dailyUsage = 15.kWh();
var monthlyUsage = dailyUsage * 30;
Console.WriteLine($"Monthly: {monthlyUsage.TokWh()} kWh");
Console.WriteLine($"In MJ: {monthlyUsage.ToMJ():F0} MJ");
// Calculate cost (example rate)var costPerKwh = 0.15; // $0.15 per kWhvar monthlyCost = monthlyUsage.TokWh() * costPerKwh;
Console.WriteLine($"Monthly cost: ${monthlyCost:F2}");
// Compare appliancesvar ac = 5.kWh();
var heater = 3.kWh();
var total = ac + heater;
var acPercentage = (ac / total) * 100;
Console.WriteLine($"AC is {acPercentage:F1}% of total");