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.

Values carry their units

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. A variable has no unit of its own, and unit options do not give it one. They are suggested units for an input form. They do not say what unit the variable is in, and nothing is converted to them: a value supplied in a unit outside the list is stored and computed exactly as supplied.

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 the next step uses it; rounding is applied only when a value is displayed, according to the variable’s 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.