Skip to content

Data study

Abbiamo fatto un andata-ritorno di 306 conversioni di unità un milione di volte. Ecco la precisione che effettivamente perdi.

Andata-ritorno ogni conversione un milione di volte. L'88,2% di coppie va alla deriva di esattamente zero; il caso peggiore perde precisione nella 15ª cifra significativa. Ecco perché — e quali categorie sono perfettamente stabili.

By Published

Ogni conversione di unità sul web viene eseguita su IEEE 754 floating point a doppia precisione — lo stesso formato numerico a 64 bit che JavaScript, i fogli di calcolo e la maggior parte dei calcolatori utilizzano. È accurato a circa 15-16 cifre significative, ma non è infinitamente preciso: la maggior parte delle frazioni decimali non può essere memorizzata esattamente in binario. Questo solleva una domanda naturale. Se converti un numero da un'unità a un'altra e indietro, ottieni il numero originale? E se lo fai di nuovo, e di nuovo — l'errore si accumula?

L'abbiamo testato in modo esaustivo. Per tutti gli 306 abbinamenti di conversione principali nel catalogo di Convertitive (ogni categoria eccetto la temperatura, che è una conversione affine piuttosto che un puro rapporto), abbiamo iniziato al valore 1, convertito avanti e indietro, e ripetuto quel ciclo di andata-ritorno un milione di volte. Quindi abbiamo misurato di quanto il risultato era andato alla deriva da 1.

Scoperta 1: l'88% delle conversioni non va mai alla deriva

Delle 306 coppie, 270 (88,2%) sono tornate esattamente a 1 dopo un milione di andate-ritorno — bit-per-bit identico, nessun errore. Questi sono gli abbinamenti il cui rapporto da unità a unità è esattamente rappresentabile nel floating point binario, quindi ogni conversione è perfettamente reversibile non importa quante volte la ripeti.

Questo è un risultato più forte di quello che la maggior parte delle persone si aspetta. L'intuizione che “l'errore floating-point si accumula sempre” è semplicemente falsa per la maggior parte delle conversioni reali.

Scoperta 2: anche il caso peggiore rimane accurato a 15 cifre

Le 36 coppie rimanenti hanno avuto una deriva — ma quasi nulla. Ecco i peggiori trasgressori dopo un milione completo di andate-ritorno:

Coppia di conversioneCategoriaDeriva assoluta dopo 1.000.000 andate-ritorno
miglia → pollicilunghezza1,78 × 10⁻¹⁵
kPa → mmHgpressione1,11 × 10⁻¹⁵
anni → seconditempo9,99 × 10⁻¹⁶
once → tonnellatepeso8,88 × 10⁻¹⁶
libbre → tonnellatepeso8,88 × 10⁻¹⁶
nodi → km/hvelocità7,77 × 10⁻¹⁶
bar → psipressione6,66 × 10⁻¹⁶
kWh → jouleenergia4,44 × 10⁻¹⁶

La coppia singola peggiore, miglia → pollici, è andata alla deriva di 1,78 × 10⁻¹⁵ — all'incirca due parti per quadrilione, dopo unmilione di andate-ritorno. Un utente normale esegue esattamente una conversione, dove l'errore è milioni di volte più piccolo ancora e si trova ben al di sotto della 15ª cifra significativa. In termini pratici, il risultato è esatto.

Scoperta 3: quali categorie sono perfettamente stabili

La deriva si raggruppa per categoria e lo schema è spiegato interamente da come le definizioni di unità si fattorizzano in binario:

CategoriaCoppie testateCoppie a zero driftPeggiore drift
dati (byte, bit)3030 (100%)0
volume5656 (100%)0
energia3028 (93%)4,44 × 10⁻¹⁶
tempo3028 (93%)9,99 × 10⁻¹⁶
peso3026 (87%)8,88 × 10⁻¹⁶
lunghezza5648 (86%)1,78 × 10⁻¹⁵
coppia2016 (80%)4,44 × 10⁻¹⁶
pressione3022 (73%)1,11 × 10⁻¹⁵
potenza128 (67%)2,22 × 10⁻¹⁶
velocità128 (67%)7,77 × 10⁻¹⁶

Dati e volume sono perfettamente stabili — ogni coppia fa un andata-ritorno senza perdite. Le unità di dati sono poteri di due e dieci che il binario gestisce facilmente; le unità di volume in questo catalogo condividono fattori che si annullano esattamente. Le categorie con la maggior parte della deriva — potenza e velocità — sono dominate da definizioni come cavalli vapore e nodi che tirano in fattori irrazionali in binario.

Perché questo accade

La mantissa di archiviazione floating point a doppia precisione è a 53 bit, dando un epsilon di macchina di circa 2,2 × 10⁻¹⁶ — il più piccolo gap relativo tra i numeri rappresentabili vicino a 1. Una conversione moltiplica per un rapporto di due fattori di unità. Quando quel rapporto è una frazione binaria esatta (o i fattori avanti e indietro si annullano esattamente), il ciclo di andata-ritorno è senza perdite e la deriva è zero per sempre. Quando il rapporto non è esattamente rappresentabile — come con l'0,0254 m del pollice o l'1609,344 m del miglio — ogni conversione viene arrotondata al valore rappresentabile più vicino, lasciando un errore dell'ordine di uno epsilon. Nel corso di un milione di andate-ritorno questi errori fanno una passeggiata casuale lenta, motivo per cui anche il caso peggiore raggiunge solo poche volte 10⁻¹⁵.

Il da asporto pratico

La conversione di unità nel browser è, a tutti gli effetti, esatta. L'errore è limitato dall'epsilon della macchina, non si accumula in modo significativo nell'uso normale ed è sempre ben al di sotto della precisione che visualizzeresti mai. Se ti sei mai chiesto se il concatenamento di conversioni attraverso uno strumento corrompe silenziosamente i tuoi numeri — non lo fa. Per il quadro completo di come i risultati di Convertitive si confrontano con i valori di riferimento autorevoli, vedi lo studio di accuratezza del convertitore e la metodologia di conversione.

Metodologia

Per ogni coppia ordinata di unità principali (A, B) all'interno di una categoria, abbiamo calcolato v ← v × (factorA / factorB) poi v ← v × (factorB / factorA), iniziando da v = 1, ripetuto 1.000.000 di volte e registrato |v − 1|. I fattori sono i valori esatti factorToBase dai dati di unità di Convertitive, derivati da NIST SP 811. Tutta l'aritmetica è IEEE 754 binary64 (tipo numerico nativo di JavaScript). La temperatura è stata esclusa perché è una conversione affine (ha un offset additivo), non un puro rapporto, quindi il modello di andata-ritorno sopra non si applica. La procedura è deterministica: gli stessi input producono sempre gli stessi valori di deriva segnalati qui.

Frequently asked questions

Cos'è la deriva di conversione?
La deriva è il piccolo errore che si accumula quando converti un valore da un'unità a un'altra e indietro più volte. In aritmetica esatta, convertendo 1 metro in piedi e indietro restituisce esattamente 1. In IEEE 754 double-precision floating point — che ogni browser e foglio di calcolo utilizza — i valori intermedi vengono arrotondati a 53 bit, quindi l'andata-ritorno può atterrare leggermente lontano da dove è iniziato.
Devo preoccuparmi dell'errore floating-point nelle conversioni di unità?
Per qualsiasi uso realistico, no. Dopo un milione di andate-ritorno, la coppia peggiore che abbiamo misurato (miglia a pollici) è andata alla deriva di 1,78 × 10⁻¹⁵ — circa due parti per quadrilione. Una singola conversione nel mondo reale va alla deriva molto meno di quello, e l'errore è molti ordini di grandezza al di sotto di qualsiasi precisione di visualizzazione che useresti mai. La matematica è effettivamente esatta a fini pratici.
Perché alcune conversioni non hanno deriva?
Quando il rapporto tra due unità è esattamente rappresentabile in floating point binario, l'andata-ritorno è senza perdite. I poteri di dieci che si risolvono in frazioni binarie pulite e le definizioni di unità che condividono fattori producono rapporti che l'hardware può memorizzare esattamente. 270 delle 306 coppie che abbiamo testato (88,2%) rientrano in questa categoria e non hanno mostrato deriva nemmeno dopo un milione di andate-ritorno.
Quali conversioni vanno alla deriva di più?
Coppie da metrica a imperiale i cui fattori di definizione non sono esatte frazioni binarie — miglia a pollici, kPa a mmHg, nodi a km/h, chilowatt-ore a joule. Questi si basano su fattori come 1609,344 m per miglio o 0,0254 m per pollice, che non possono essere memorizzati esattamente in binario, quindi ogni conversione introduce un piccolo errore di arrotondamento.
Come è stato misurato?
Per ogni coppia di unità principali, abbiamo iniziato con il valore 1, convertito A→B poi B→A, e ripetuto quel ciclo 1.000.000 di volte utilizzando i fattori esatti dai dati di unità di Convertitive e l'aritmetica a doppia precisione standard. Abbiamo quindi misurato la differenza assoluta dal valore iniziale di 1. La temperatura è stata esclusa perché è una conversione affine (con offset), non un puro rapporto. Il calcolo è deterministico e riproducibile.
Questo significa che Convertitive arrotonda le mie risposte?
Convertitive calcola con la piena doppia precisione e arrotonda solo per la visualizzazione. La deriva studiata qui è intrinseca all'aritmetica floating-point stessa, non all'arrotondamento che Convertitive aggiunge — ed è molto più piccola dell'arrotondamento di visualizzazione, quindi non la vedi mai.

Sources & references

Authoritative references cited by this piece. Verified by Buğra Sözeri on the dates shown and re-checked at every deploy.

Related

Published June 27, 2026