Skip to content

Unit Conversion

Convert values between units (cents→dollars, meters→kilometers, etc.).

Configuration

Keyed by output unit:

javascript
import { calc } from "a-calc";

calc("100 | =2 !ua:$", {
  _unit_convert_out: {
    $: { "¢": 0.01 }, // ¢ × 0.01 = $
  },
}); // '1.00$' (100¢ → 1$)

_unit_convert_in

Keyed by input unit:

javascript
calc("100 | =2 !ua:$", {
  _unit_convert_in: {
    "¢": { $: 0.01 },
  },
}); // '1.00$'

Conversion Rule Formats

javascript
_unit_convert_out: {
  '$': {
    '¢': 0.01,                          // number: multiply
    'mill': { mul: 0.001 },             // object mul
    'large': { div: 100 },              // object div
    'custom': (v, inUnit, outUnit) => v / 7.2,  // function
    'fn': { fn: (v) => v / 7.2 }       // object fn
  }
}

Syntax

javascript
// Specify output unit only (auto-detect input)
calc("100 | =2 !ua:$", { _unit_convert_out: { $: { "¢": 0.01 } } });

// Specify both output and input units
calc("100 | =2 !ua:$:¢", {
  _unit_convert_out: { $: { "¢": 0.01, mill: 0.001 } },
});

// Convert without showing unit
calc("100 | =2 !uh:$", { _unit_convert_out: { $: { "¢": 0.01 } } });
// '1.00'

Pure Config Mode

javascript
calc("100 | =2", {
  _unit_convert_out: { $: { "¢": 0.01 } },
  _unit_default_out: "$",
  _unit_default_in: "¢",
  _unit_default_position: "before",
}); // '$1.00'

Multiple Input Units

javascript
calc("100 | =2 !ua:$", {
  _unit_convert_out: { $: { "¢": 0.01, mill: 0.001 } },
  _unit_default_in: "¢",
}); // '1.00$'

Real-World Examples

Length Conversion

javascript
const lengthOptions = {
  _unit_convert_out: {
    km: { m: { div: 1000 }, cm: { div: 100000 } },
  },
};

calc("5000 | =2 !ua:km:m", lengthOptions); // '5.00km'
calc("150 | =2 !ua:km:cm", lengthOptions); // '0.00km'

Temperature Conversion

javascript
const tempOptions = {
  _unit_convert_out: {
    "°C": {
      "°F": (f) => ((f - 32) * 5) / 9,
      K: (k) => k - 273.15,
    },
  },
};

calc("100 | =1 !ua:°C:°F", tempOptions); // '37.7°C'

Released under the MIT License