Skip to content

A simple library for working with units of measure in .NET

License

Notifications You must be signed in to change notification settings

1eyewonder/Fs.Units

Repository files navigation

Fs.Units

A simple library for working with units of measure in .NET.

The goal of this library is to assist developers with quick proof of concepts as well as full functioning projects which involve common units of measure.

Feedback and assistance are welcome!

Documentation

View our docs at https://1eyewonder.github.io/Fs.Units to see the full list of supported units of measure and how to use them.

NuGet

Package Release Pre-Release License
Fs.Units NuGet version (Fs.Units) NuGet GitHub license
Fs.Units.CSharp NuGet version (Fs.Units.CSharp) NuGet GitHub license

Builds

GitHub Actions
GitHub Actions
Build History

Unit Types

  • Simple Units: A basic unit of measure
[<Measure>] type inch 
  • Compound Units: Derived units of measure consisting of combinations of two or more units of measure
[<Measure>] type in2 = inch * inch

Examples

F#

Explicit Conversion Example

open Fs.Units

let valueInFeet = Inch.create 1.0 |> Inch.toFeet // float<ft>

Implicit Conversion Example

For some compound units, implicit conversion is supported. This allows for a more natural syntax in certain instances.

open Fs.Units

let thing1 = Coulomb.create 1.0 // float<ElectricCharge.C>
let thing2 = 1.<A> * 1.<s> // float<A*s>

let totalThing = area1 + area2 // float<ElectricCharge.C>
open Fs.Units

let thing1 = Liter.create 1.0 // float<L>
let thing2 = 1.<dm> * 1.<dm> * 1.<dm> // float<dm * dm * dm>

let totalThing = area1 + area2 // float<L>

Helper Functions

Some helper functions are provided to prevent boilerplate code for common math operations such as min, max, abs, etc.

open Fs.Units
open Fs.Units.Helpers

let value1 = Foot.create 1.0 // float<ft>
let value2 = Foot.create 2.0 // float<ft>
let maxValue = max value1 value2 // float<ft>
let plainValue = Foot.create 1. |> removeUnits // float

C#

Example

using Fs.Units.CSharp;

var valueInFeet = 1d.InchToFeet(); // double

About

A simple library for working with units of measure in .NET

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages