Skip to main content
Two properties of TrueMath’s number handling matter across every calculation: values carry their units, and they are kept at full precision from input to output.

Units travel with values

A value is not just a number — it is a number with a unit. A home price is 375000 USD; a term is 30 yr; a distance is 5.2 m. Because the unit is part of the value, TrueMath can:
  • Convert compatible units automatically. Adding 1 m and 10 cm yields a length; you do not convert by hand.
  • Reject incompatible combinations. Adding a length to a mass is an error rather than a silently wrong number.
TrueMath supports units across many dimensions — length, area, volume, mass, time, angle, information, and currency — as well as compound units such as velocity and cost-per-unit. For the full catalog and conversion behavior, see Units.

Model quantities as unit-carrying values

Units are a correctness layer, not decoration — the same role types play in a programming language. They are most valuable when you model a domain so that every dimensional quantity carries its unit, rather than reducing it to a bare number that assumes one. A term is 30 yr, not a 30 that the rest of the domain has agreed to read as years. Carrying the unit is what lets TrueMath validate the value — a term supplied in inches is rejected, not silently used — and convert it without loss wherever it is needed. A bare number assumes its unit by convention, and that convention is invisible to both the engine and whoever supplies the value, so nothing catches a value entered in the wrong unit. The result is a confident, silently wrong answer of exactly the kind units exist to prevent. The guidance follows: keep values in their units through the calculation, and reduce one to a bare number only at the point where a scalar number is genuinely required, with a single explicit conversion. Stripping a unit reflexively throws away the safety the engine was carrying for you — see When to strip a unit.

Full precision, no intermediate rounding

TrueMath carries values at full internal precision through every step of a calculation — roughly 15–16 significant digits — and that full-precision result is what every step computes with. An intermediate result is never rounded before it feeds the next step; rounding is applied only when a value is displayed, according to the variable’s display format. This matters in multi-step work. When a rounded value becomes the input to the next equation, small approximations compound into a meaningfully wrong answer. By keeping every intermediate value exact, TrueMath eliminates that drift — the difference is invisible in a single calculation and decisive in a long one.
Display formatting changes how a value is shown, not how it is computed. The stored value remains at full precision and is what subsequent steps use. Even a format set to show a value’s natural precision displays at most 10 decimal places — the full-precision value behind it is unchanged.