Skip to content

Unit conversions

The package contains conversion methods for length, area, time, speed, angle, and angular velocity units. These methods are used to convert values between different units of measurement.

For each unit type, there is an enum that provides conversion methods between units based on conversion factors relative to a base unit.

There are also extension methods on double that allow for more concise conversions.

Length conversions

Supported length units are with meter as the base unit:

  • millimeter (mm)
  • centimeter (cm)
  • meter (m)
  • kilometer (km)
  • inch (in)
  • foot (ft)
  • yard (yd)
  • mile (mi)
  • nautical mile (nmi)

An example using the LengthUnit enum:

// Convert directly from and to meters.
final meters = 4000.0;
final kmUnit = LengthUnit.kilometer;
final kilometers = kmUnit.fromMeters(meters); // 4.0
final meters2 = kmUnit.toMeters(kilometers); // 4000.0
// You can also convert between units wihout using meters.
final miles = kmUnit.toUnit(kilometers, LengthUnit.mile); // ~ 2.485484

An example using an extension on double:

// from meters to kilometers
1000.0.convertLength(to: LengthUnit.kilometer); // ~1.0
// from kilometers to meters
1.0.convertLength(from: LengthUnit.kilometer); // ~1000.0

Area conversions

Supported area units are with square meter as the base unit:

  • square millimeter (mm²)
  • square centimeter (cm²)
  • square meter (m²)
  • square kilometer (km²)
  • square inch (in²)
  • square foot (ft²)
  • square yard (yd²)
  • square mile (mi²)
  • acre (ac)
  • hectare (ha)

An example using the AreaUnit enum:

// Convert directly from and to square meters.
final squareMeters = 10000.0;
final sqKmUnit = AreaUnit.squareKilometer;
final squareKilometers = sqKmUnit.fromSquareMeters(squareMeters); // 0.01
final squareMeters2 = sqKmUnit.toSquareMeters(squareKilometers); // 10000.0
// You can also convert between units without using square meters.
final acres = sqKmUnit.toUnit(squareKilometers, AreaUnit.acre); // ~2.4711

An example using an extension on double:

// from square meters to square kilometers
1000000.0.convertArea(to: AreaUnit.squareKilometer); // ~1.0
// from square kilometers to square meters
1.0.convertArea(from: AreaUnit.squareKilometer); // ~1000000.0

Time conversions

Supported time units are with second as the base unit:

  • nanosecond (ns)
  • microsecond (µs)
  • millisecond (ms)
  • second (s)
  • minute (min)
  • hour (h)
  • day (d)
  • week (w)

An example using the TimeUnit enum:

// Convert directly from and to seconds.
final seconds = 3600.0;
final hours = TimeUnit.hour.fromSeconds(seconds); // 1.0
final seconds2 = TimeUnit.hour.toSeconds(hours); // 3600.0
// You can also convert between units without using seconds.
final minutes = TimeUnit.hour.toUnit(hours, TimeUnit.minute); // 60.0

An example using an extension on double:

// from seconds to minutes
60.0.convertTime(to: TimeUnit.minute); // 1.0
// from minutes to seconds
1.0.convertTime(from: TimeUnit.minute); // 60.0

Speed conversions

Supported speed units are with meter per second as the base unit:

  • millimeter per second (mm/s)
  • centimeter per second (cm/s)
  • meter per second (m/s)
  • kilometer per hour (km/h)
  • foot per second (ft/s)
  • mile per hour (mph)
  • knot (kn)

An example using the SpeedUnit enum:

// Convert directly from and to meters per second.
final metersPerSecond = 3.6;
final kilometersPerHour =
SpeedUnit.kilometerPerHour.fromMetersPerSecond(metersPerSecond); // 12.96
final metersPerSecond2 =
SpeedUnit.kilometerPerHour.toMetersPerSecond(kilometersPerHour); // 3.6
// You can also convert between units without using meters per second.
final milesPerHour =
SpeedUnit.kilometerPerHour.toUnit(kilometersPerHour,
SpeedUnit.milePerHour); // 8.04672

An example using an extension on double:

// from meters per second to kilometers per hour
1.0.convertSpeed(to: SpeedUnit.kilometerPerHour); // ~3.6
// from kilometers per hour to meters per second
3.6.convertSpeed(from: SpeedUnit.kilometerPerHour); // ~1.0

Angle conversions

Supported angle units are with radian as the base unit:

  • milliradian (mrad)
  • radian (rad)
  • arcsecond (arcsec)
  • arcminute (arcmin)
  • degree (° or deg)
  • gradian (gon)
  • turn (turn)

An example using the AngleUnit enum:

// Convert directly from and to radians.
final radians = 3.14159; // ~pi
final degrees = AngleUnit.degree.fromRadians(radians); // ~180.0
final radians2 = AngleUnit.degree.toRadians(degrees); // ~3.14159
// You can also convert between units without using radians.
final gradians =
AngleUnit.degree.toUnit(degrees, AngleUnit.gradian); // ~200.0

An example using an extension on double:

// from degrees to radians
90.0.convertAngle(from: AngleUnit.degree); // ~1.5708
// from radians to degrees
1.5708.convertAngle(to: AngleUnit.degree); // ~90.0

Angular velocity conversions

Supported angular velocity units are with radian per second as the base unit:

  • degree per second (°/s or deg/s)
  • radian per second (rad/s)
  • revolution per minute (rpm)
  • revolution per second (rps)
  • milliradian per second (mrad/s)

An example using the AngularVelocityUnit enum:

// Convert directly from and to radians per second.
final radiansPerSecond = 6.28319;
final rpmUnit = AngularVelocityUnit.revolutionPerMinute;
final rpm = rpmUnit.fromRadiansPerSecond(radiansPerSecond); // ~60.0
final radiansPerSecond2 = rpmUnit.toRadiansPerSecond(rpm); // ~6.28319
// You can also convert between units without using radians per second.
final degreesPerSecond =
rpmUnit.toUnit(rpm, AngularVelocityUnit.degreePerSecond); // ~360.0

An example using an extension on double:

// from radians per second to degrees per second
1.0.convertAngularVelocity(
to: AngularVelocityUnit.degreePerSecond); // ~57.296
// from degrees per second to radians per second
57.296.convertAngularVelocity(
from: AngularVelocityUnit.degreePerSecond); // ~1.0