Skip to content

Advanced Usage

Marcus Ackre Medina edited this page Sep 13, 2026 · 1 revision

Advanced Usage

This library is intentionally simple — a single struct with unit extension methods and standard operators. There isn't a large surface of advanced features, but a few things are worth calling out.

Arithmetic across unit families

Because every Area is stored internally as square meters, you can freely mix creation methods from different namespaces in the same expression:

using MarcusMedina.Units.Area.Metric;
using MarcusMedina.Units.Area.US;

Area combined = 1.Hectares() + 1.Acres();
double totalSquareMeters = combined.ToSquareMeters(); // ≈ 14,046.86

Ratio division

Dividing one Area by another returns a plain double ratio (not an Area), which is useful for "how many times bigger" comparisons:

using MarcusMedina.Units.Area.SwedishOld;

Area big = 4.Tunnland();
Area small = 1.Kappland();
double ratio = big / small; // 128

Dividing an Area by a double instead scales it down and still returns an Area:

Area half = big / 2.0;

Comparisons

Area implements IComparable<Area> and all six comparison operators, so areas from different unit families compare correctly without manual conversion:

using MarcusMedina.Units.Area.Metric;
using MarcusMedina.Units.Area.British;

bool bigger = 1.Acres() > 1.Roods(); // true — a rood is a quarter acre

Formatting

Area.ToString() prints the square-meter value using invariant culture, formatted as "{value} m²" — useful for quick logging without writing your own formatter:

Console.WriteLine(4.Tunnland()); // "4936.32 m²"

There is no built-in support for formatting in a different unit — call the relevant To...() method and format the double yourself if you need e.g. "4 tunnland".

Clone this wiki locally