License: The MIT License (MIT)
Project page: https://github.com/objorke/QuantityTypes
NASA's Mars Climate Observer crashed in September 1999 because of a serious breakdown in project management. However, that accident will be best remembered for the simple error that started everything: the value of a thrust parameter was entered into computer systems in imperial, rather than SI units. That such a trivial mistake could ultimately bring about a mission failure is astonishing. It begs the question of why computers cannot help more when working with physical quantities? [Ref. 1]
- Strongly typed arithmetics of physical quantities
- Implemented as value types
- Parsing from strings
- Formatting to strings
- Operators
- Unit conversion
- Extendable (create more quantity types, add units)
- Configurable (set default units for parsing and formatting)
- NuGet package
Length s = 100 * Length.Metre;
Time t = 9.58 * Time.Second;
Velocity v = s / t;
Console.WriteLine(v);
Console.WriteLine(v.ToString("0.00[km/h]"));
Console.WriteLine("Speed: {0:0.00[!km/h] kmph}", v);
Mass m = Mass.Parse("92 kg");
double massInPounds = m.ConvertTo(Mass.Pound);
Temperature temp = 100 * Temperature.DegreeCelsius;
double tempInFahrenheit = temp.ConvertTo(Temperature.DegreeFahrenheit);
- B. D. Hall. Software support for physical quantities. 2002.
- Barton and Nackman. Dimensional analysis. C++ Report
- Brown. Introduction to the SI Library of Unit-Based Computation
- Brown. Applied Template Metaprogramming in SIUNITS
- Physical quantity
- Unit of measurement
- Conversion of units
- International System of Units
- A Dictionary of Units of Measurement
- The International System of Units (SI) (Bureau International des Poids et Mesures)
- Package siunitx: A comprehensive (SI) units package.
- Writing SI units and symbols