Dopo essere entrato in una "discussione accesa" con qualcuno, ho pensato di fare questa domanda per amore dei posteri. Sono disposto a essere corretto se la mia ipotesi non è corretta, ma mi piacerebbe sentire un'opinione di terzi da qualcuno con più credibilità di me.
Supponiamo di dover calcolare e memorizzare valori numerici che sono espressi in un formato decimale. Tuttavia, tutti gli input e gli output numerici devono adattarsi all'interno di un intervallo di valori specifico. Inoltre, i decimali sono importanti ma non saremo mai interessati a valori inferiori a una cifra decimale specifica. Questo è vero per qualsiasi calcolo. Se un calcolo produce un valore contenente cifre significative sotto l'intervallo 10 ^ -8, sono essenzialmente 0. Analogamente, se il valore è superiore al limite superiore, viene considerato un caso di errore.
Considerando questi vincoli fissi, che non cambieranno mai, è meglio usare un tipo di dati Decimal (s, p) tradizionale o usare un tipo Integer che può contenere tutti i valori rappresentati spostando il valore cifre decimali s fisse a sinistra? Ad esempio, per efficienza e precisione, dovremmo usare numeri interi compresi tra 0 e 2.100.000.000.000.000 per rappresentare tutti i valori compresi tra .00000001 e 21.000.000 o dovremmo usare decimali definiti come (8, 16)?
Chiarimento
La mia discussione specifica riguardava i tipi di dati all'interno di MySQL. Preferirei una risposta generica, supponendo che la maggior parte delle rappresentazioni decimali siano memorizzate in un formato standardizzato. Tuttavia, se non esiste uno "standard" affidabile per le definizioni dei tipi decimali, considera questa domanda in relazione a MySQL.