Data study
We round-tripped 306 unit conversions a million times. Here's the precision you actually lose.
Round-trip every conversion a million times. 88.2% of pairs drift by exactly zero; the worst case loses precision in the 15th significant digit. Here's why — and which categories are perfectly stable.
By Buğra SözeriPublished
Every unit conversion on the web runs on IEEE 754 double-precision floating point — the same 64-bit number format JavaScript, spreadsheets, and most calculators use. It is accurate to about 15–16 significant digits, but it is not infinitely precise: most decimal fractions cannot be stored exactly in binary. That raises a natural question. If you convert a number from one unit to another and back, do you get the original number? And if you do it again, and again — does the error pile up?
We tested it exhaustively. For all 306core conversion pairs in Convertitive’s catalogue (every category except temperature, which is an offset conversion rather than a pure ratio), we started at the value 1, converted forward and back, and repeated that round trip one million times. Then we measured how far the result had drifted from 1.
Finding 1: 88% of conversions never drift at all
Of the 306 pairs, 270 (88.2%) returned to exactly 1 after a million round trips — bit-for-bit identical, zero error. These are the pairs whose unit-to-unit ratio is exactly representable in binary floating point, so every conversion is perfectly reversible no matter how many times you repeat it.
That is a stronger result than most people expect. The intuition that “floating-point error always accumulates” is simply false for the majority of real conversions.
Finding 2: even the worst case stays accurate to 15 digits
The remaining 36 pairs did drift — but by almost nothing. Here are the worst offenders after a full million round trips:
| Conversion pair | Category | Absolute drift after 1,000,000 round trips |
|---|---|---|
| miles → inches | length | 1.78 × 10⁻¹⁵ |
| kPa → mmHg | pressure | 1.11 × 10⁻¹⁵ |
| years → seconds | time | 9.99 × 10⁻¹⁶ |
| oz → tonnes | weight | 8.88 × 10⁻¹⁶ |
| lb → tonnes | weight | 8.88 × 10⁻¹⁶ |
| knots → km/h | speed | 7.77 × 10⁻¹⁶ |
| bar → psi | pressure | 6.66 × 10⁻¹⁶ |
| kWh → joules | energy | 4.44 × 10⁻¹⁶ |
The single worst pair, miles → inches, drifted by 1.78 × 10⁻¹⁵ — roughly two parts in a quadrillion, after a million round trips. A normal user performs exactly one conversion, where the error is millions of times smaller still and sits far below the 15th significant digit. In practical terms, the result is exact.
Finding 3: which categories are perfectly stable
Drift clusters by category, and the pattern is explained entirely by how the unit definitions factor into binary:
| Category | Pairs tested | Zero-drift pairs | Worst drift |
|---|---|---|---|
| data (bytes, bits) | 30 | 30 (100%) | 0 |
| volume | 56 | 56 (100%) | 0 |
| energy | 30 | 28 (93%) | 4.44 × 10⁻¹⁶ |
| time | 30 | 28 (93%) | 9.99 × 10⁻¹⁶ |
| weight | 30 | 26 (87%) | 8.88 × 10⁻¹⁶ |
| length | 56 | 48 (86%) | 1.78 × 10⁻¹⁵ |
| torque | 20 | 16 (80%) | 4.44 × 10⁻¹⁶ |
| pressure | 30 | 22 (73%) | 1.11 × 10⁻¹⁵ |
| power | 12 | 8 (67%) | 2.22 × 10⁻¹⁶ |
| speed | 12 | 8 (67%) | 7.77 × 10⁻¹⁶ |
Data and volume are perfectly stable — every pair round-trips losslessly. Data units are powers of two and ten that binary handles cleanly; the volume units in this catalogue share factors that cancel exactly. The categories with the most drift — power and speed — are dominated by definitions like horsepower and knots that pull in irrational-in-binary factors.
Why this happens
Double-precision floating point stores 53 bits of mantissa, giving a machine epsilon of about 2.2 × 10⁻¹⁶ — the smallest relative gap between representable numbers near 1. A conversion multiplies by a ratio of two unit factors. When that ratio is an exact binary fraction (or the forward and reverse factors cancel exactly), the round trip is lossless and drift is zero forever. When the ratio is notexactly representable — as with the inch’s 0.0254 m or the mile’s 1609.344 m — each conversion rounds to the nearest representable value, leaving an error on the order of one epsilon. Over a million round trips those errors take a slow random walk, which is why even the worst case only reaches a few times 10⁻¹⁵.
The practical takeaway
Unit conversion in the browser is, for all intents and purposes, exact. The error is bounded by machine epsilon, it does not meaningfully accumulate in normal use, and it is always far below the precision you would ever display. If you have ever wondered whether chaining conversions through a tool quietly corrupts your numbers — it does not. For the full picture of how Convertitive’s results compare against authoritative reference values, see the converter accuracy study and the conversion methodology.
Methodology
For each ordered pair of core units (A, B) within a category, we computed v ← v × (factorA / factorB) then v ← v × (factorB / factorA), starting from v = 1, repeated 1,000,000 times, and recorded |v − 1|. Factors are the exact factorToBase values from Convertitive’s unit data, derived from NIST SP 811. All arithmetic is IEEE 754 binary64 (JavaScript’s native number type). Temperature was excluded because it is an affine conversion (it has an additive offset), not a pure ratio, so the round-trip model above does not apply. The procedure is deterministic: the same inputs always produce the same drift values reported here.
Frequently asked questions
- What is conversion drift?
- Drift is the tiny error that accumulates when you convert a value from one unit to another and back again repeatedly. In exact arithmetic, converting 1 metre to feet and back returns exactly 1. In IEEE 754 double-precision floating point — what every browser and spreadsheet uses — the intermediate values are rounded to 53 bits, so the round trip can land a hair away from where it started.
- Should I worry about floating-point error in unit conversions?
- For any realistic use, no. After one million round trips, the worst pair we measured (miles to inches) drifted by 1.78 × 10⁻¹⁵ — about two parts in a quadrillion. A single real-world conversion drifts far less than that, and the error is many orders of magnitude below any display precision you would ever use. The math is effectively exact for practical purposes.
- Why do some conversions have zero drift?
- When the ratio between two units is exactly representable in binary floating point, the round trip is lossless. Powers of ten that resolve to clean binary fractions, and unit definitions that share factors, produce ratios the hardware can store exactly. 270 of the 306 pairs we tested (88.2%) fell into this category and showed zero drift even after a million round trips.
- Which conversions drift the most?
- Metric-to-imperial pairs whose defining factors are not exact binary fractions — miles to inches, kPa to mmHg, knots to km/h, kilowatt-hours to joules. These rely on factors like 1609.344 m per mile or 0.0254 m per inch, which cannot be stored exactly in binary, so each conversion introduces a sub-epsilon rounding error.
- How was this measured?
- For every core conversion pair, we started with the value 1, converted A→B then B→A, and repeated that loop 1,000,000 times using the exact factors from Convertitive's unit data and standard double-precision arithmetic. We then measured the absolute difference from the starting value of 1. Temperature was excluded because it is an affine (offset) conversion, not a pure ratio. The computation is deterministic and reproducible.
- Does this mean Convertitive rounds my answers?
- Convertitive computes with full double precision and only rounds for display. The drift studied here is intrinsic to floating-point arithmetic itself, not to any rounding Convertitive adds — and it is far smaller than the display rounding, so you never see it.
Sources & references
Authoritative references cited by this piece. Verified by Buğra Sözeri on the dates shown and re-checked at every deploy.
- IEEE 754-2019 — Standard for Floating-Point Arithmetic — Defines the double-precision (binary64) format whose 53-bit mantissa sets the ~2.2 × 10⁻¹⁶ machine epsilon that bounds the drift measured here(as of )
- ECMAScript Language Specification — Number type — JavaScript's Number is IEEE 754 binary64; the round-trip computation runs in exactly this arithmetic(as of )
- NIST SP 811 — Guide for the Use of the International System of Units — Authoritative source for the exact metric–imperial conversion factors (e.g. 1 in = 0.0254 m) used as the pair definitions(as of )
- Convertitive unit data and methodology — The factorToBase values driving every pair in this study; the study is reproducible from this data(as of )
Related
Published June 27, 2026