Next: Numbers as Units, Previous: Operators, Up: Unit Expressions [Contents][Index]

### 5.2 Sums and Differences of Units

You may sometimes want to add values of different units that are outside the SI. You may also wish to use `units` as a calculator that keeps track of units. Sums of conformable units are written with the ‘`+`’ character, and differences with the ‘`-`’ character.

    You have: 2 hours + 23 minutes + 32 seconds
    You want: seconds
            * 8612
            / 0.00011611705

    You have: 12 ft + 3 in
    You want: cm
            * 373.38
            / 0.0026782366

    You have: 2 btu + 450 ft lbf
    You want: btu
            * 2.5782804
            / 0.38785542

The expressions that are added or subtracted must reduce to identical expressions in primitive units, or an error message will be displayed:

    You have: 12 printerspoint - 4 heredium
                                          ^
    Illegal sum of non-conformable units

As usual, the precedence for ‘`+`’ and ‘`-`’ is lower than that of the other operators. A fractional quantity such as 2 1/2 cups can be given as ‘`(2+1|2) cups`’; the parentheses are necessary because multiplication has higher precedence than addition. If you omit the parentheses, `units` attempts to add ‘`2`’ and ‘`1|2 cups`’, and you get an error message:

    You have: 2+1|2 cups
                       ^
    Illegal sum or difference of non-conformable units

The expression could also be correctly written as ‘`(2+1/2) cups`’. If you write ‘`2 1|2 cups`’ the space is interpreted as multiplication so the result is the same as ‘`1 cup`’.

The ‘`+`’ and ‘`-`’ characters sometimes appears in exponents like ‘`3.43e+8`’. This leads to an ambiguity in an expression like ‘`3e+2 yC`’. The unit ‘`e`’ is a small unit of charge, so this can be regarded as equivalent to ‘`(3e+2) yC`’ or ‘`(3 e)+(2 yC)`’. This ambiguity is resolved by always interpreting ‘`+`’ and ‘`-`’ as part of an exponent if possible.

Next: Numbers as Units, Previous: Operators, Up: Unit Expressions [Contents][Index]