`NSUnitConverterLinear`

is an `UnitConverter`

subclass for converting between units using a linear equation.

Language

- Swift
- Objective-C

SDKs

- iOS 10.0+
- macOS 10.12+
- tvOS 10.0+
- watchOS 3.0+

## Overview

A linear equation for unit conversion takes the form `y = mx + b`

, such that:

**y**is the value in terms of the base unit of the dimension**m**is the known coefficient used for this unit's conversion**x**is the value in terms of the unit on which this method is called**b**is the known constant used for this unit's conversion

The `baseUnitValueFromValue:`

method performs the conversion in the form of `y = mx + b`

, where `x`

represents the value passed in and `y`

represents the value returned. The `valueFromBaseUnitValue:`

method performs the inverse conversion in the form of `x = (y - b) / m`

, where `y`

represents the value passed in and `x`

represents the value returned.

For example, consider the `fahrenheit`

unit defined by `UnitTemperature`

: The `baseUnitValueFromValue:`

method calculates the value in the base unit, `kelvin`

using the formula `K = (0.55555555555556) × °F + 255.37222222222427`

, and the `valueFromBaseUnitValue:`

method calculates the value in `fahrenheit`

using the formula `°F = (K — 255.37222222222427) / (0.55555555555556)`

, where the `coefficient`

is `(0.55555555555556)`

and the `constant`

is `255.37222222222427`

.

Units that perform conversion using only a scale factor have a `coefficient`

equal to the scale factor and a `constant`

equal `0`

. For example, consider the `kilometers`

unit defined by `UnitLength`

: The `baseUnitValueFromValue:`

method calculates the value in meters using the formula `valueInMeters = 1000 * valueInKilometers + 0`

, and the `valueFromBaseUnitValue:`

calculates the value in kilometers using the formula `valueInKilometers = (valueInMeters - 0) / 1000`

, where the coefficient is `1000`

and the constant is `0`

.