mirror of
https://github.com/josdejong/mathjs.git
synced 2026-01-18 14:59:29 +00:00
149 lines
5.1 KiB
Markdown
149 lines
5.1 KiB
Markdown
# Units
|
|
|
|
Math.js supports units. Units can be used to do calculations and to perform
|
|
conversions.
|
|
|
|
|
|
## API
|
|
|
|
Units can be created using the function `math.unit`. This function accepts
|
|
either a single string argument containing a value and unit, or two arguments,
|
|
the first being a numeric value and the second a string containing a unit.
|
|
Most units support prefixes like `k` or `kilo`, and many units have both a
|
|
full name and an abbreviation. The returned object is a `Unit`.
|
|
|
|
Syntax:
|
|
|
|
```js
|
|
math.unit(value: number, plainUnit: string) : Unit
|
|
math.unit(unit: string) : Unit
|
|
math.unit(unit: Unit) : Unit
|
|
```
|
|
|
|
Example usage:
|
|
|
|
```js
|
|
var a = math.unit(45, 'cm'); // Unit 450 mm
|
|
var b = math.unit('0.1 kilogram'); // Unit 100 gram
|
|
var c = math.unit('2 inch'); // Unit 2 inch
|
|
```
|
|
|
|
A `Unit` contains the following functions:
|
|
|
|
- `clone()`. Clone the unit, returns a new unit with the same parameters.
|
|
- `equalBase(unit)`. Test whether a unit has the same base as an other unit:
|
|
length, mass, etc.
|
|
- `equals(unit)`. Test whether a unit equals an other unit. Units are equal
|
|
when they have the same base and same value when normalized to SI units.
|
|
- `in(plainUnit)`. Convert the unit to a specific prefix and unit. Returns
|
|
a clone of the unit with a fixed prefix and unit.
|
|
- `toNumber(plainUnit)`. Get the value of a unit when converted to the specified
|
|
plain unit (a unit with optional prefix but without value).
|
|
- `format([precision])`. Get a string representation of the unit. The function
|
|
will determine the best fitting prefix for the unit. If precision is defined,
|
|
the units value will be rounded to the provided number of digits.
|
|
- `toString()`. Get a string representation of the unit. The function will
|
|
determine the best fitting prefix for the unit.
|
|
|
|
```js
|
|
var a = math.unit(55, 'cm'); // Unit 550 mm
|
|
var b = math.unit('0.1 kilogram'); // Unit 100 gram
|
|
var c = math.unit('2 inch'); // Unit 100 millimeter
|
|
|
|
var d = c.in('cm'); // Unit 5.08 cm
|
|
b.toNumber('gram'); // Number 100
|
|
|
|
c.equals(a); // false
|
|
c.equals(d); // true
|
|
c.equalBase(a); // true
|
|
c.equalBase(b); // false
|
|
|
|
d.toString(); // String "5.08 cm"
|
|
|
|
```
|
|
|
|
|
|
## Calculations
|
|
|
|
Basic operations `add`, `subtract`, `multiply`, and `divide` can be performed
|
|
on units. Trigonometric functions like `sin` support units with an angle as
|
|
argument.
|
|
|
|
```js
|
|
var a = math.unit(45, 'cm'); // Unit 450 mm
|
|
var b = math.unit('0.1m'); // Unit 100 mm
|
|
math.add(a, b); // Unit 0.65 m
|
|
math.multiply(b, 2); // Unit 200 mm
|
|
|
|
var c = math.unit(45, 'deg'); // Unit 45 deg
|
|
math.cos(c); // Number 0.7071067811865476
|
|
```
|
|
|
|
|
|
## Reference
|
|
|
|
### Units
|
|
|
|
Math.js comes with the following built-in units.
|
|
|
|
Base | Unit
|
|
------------------- | ---
|
|
Length | meter (m), inch (in), foot (ft), yard (yd), mile (mi), link (li), rod (rd), chain (ch), angstrom, mil
|
|
Surface | m2, sqin, sqft, sqyd, sqmi, sqrd, sqch, sqmil
|
|
Volume | m3, litre (L), cuin, cuft, cuyd, teaspoon, tablespoon
|
|
Liquid | volume minim (min), fluiddram (fldr), fluidounce (fldz), gill (gi), cup (cp), pint (pt), quart (qt), gallon (gal), beerbarrel (bbl), oilbarrel (obl), hogshead
|
|
Angles | rad, deg, grad, cycle
|
|
Time | second (s), seconds, minute, minutes, hour (h), hours, day, days
|
|
Mass | gram(g), tonne, ton, grain (gr), dram(dr), ounce (oz), poundmass (lbm), hundredweight (cwt), stick
|
|
Electric current | ampere (A)
|
|
Temperature | kelvin (K), celsius (degC), fahrenheit (degF), rankine (degR)
|
|
Amount of substance | mole (mol)
|
|
Luminous | intensity candela (cd)
|
|
Force | newton (N), poundforce (lbf)
|
|
Binary | bit (b), byte (B)
|
|
|
|
|
|
### Prefixes
|
|
|
|
The following decimal prefixes are available.
|
|
|
|
Name | Abbreviation | Value
|
|
------- | ------------- | -----
|
|
deca | da | 1e1
|
|
hecto | h | 1e2
|
|
kilo | k | 1e3
|
|
mega | M | 1e6
|
|
giga | G | 1e9
|
|
tera | T | 1e12
|
|
peta | P | 1e15
|
|
exa | E | 1e18
|
|
zetta | Z | 1e21
|
|
yotta | Y | 1e24
|
|
|
|
Name | Abbreviation | Value
|
|
------ | ------------- | -----
|
|
deci | d | 1e-1
|
|
centi | c | 1e-2
|
|
milli | m | 1e-3
|
|
micro | u | 1e-6
|
|
nano | n | 1e-9
|
|
pico | p | 1e-12
|
|
femto | f | 1e-15
|
|
atto | a | 1e-18
|
|
zepto | z | 1e-21
|
|
yocto | y | 1e-24
|
|
|
|
The following binary prefixes are available.
|
|
They can be used with units `bit` (`b`) and `byte` (`B`).
|
|
|
|
Name | Abbreviation | Value
|
|
----------- | ------------- | -----
|
|
kilo, kibi | k, Ki | 1024
|
|
mega, mebi | M, Mi | 1024^2
|
|
giga, gibi | G, Gi | 1024^3
|
|
tera, tebi | T, Ti | 1024^4
|
|
peta, pebi | P, Pi | 1024^5
|
|
exa, exi | E, Ei | 1024^6
|
|
zetta, zebi | Z, Zi | 1024^7
|
|
yotta, yobi | Y, Yi | 1024^8
|