devo codificare un BigDecimal
compatto in un ByteBuffer
per sostituire il mio attuale regime (pessima) codifica (scrivendo il BigDecimal
come UTF-8 codificati String
prefisso un byte che indica la lunghezza String
).BigDecimal scala ottimale per la codifica
Dato che un valore BigDecimal
è effettivamente un valore intero (in senso matematico) e una scala associata sto pianificando di scrivere la scala come un singolo byte seguito da un numero intero VLQ encoded. Questo dovrebbe coprire adeguatamente l'intervallo di valori attesi (cioè la scala massima 127).
La mia domanda: quando si incontrano valori elevati come 10.000.000.000 è chiaramente ottimale codificarlo come il valore: 1 con una scala di -10 anziché codificare l'intero 10.000.000.000 con una scala di 0 (che occuperà più byte) . Come posso determinare la scala ottimale per un dato BigDecimal
? ... In altre parole, come posso determinare la scala minima possibile che ho impostato per assegnare un BigDecimal
senza dover eseguire alcun arrotondamento?
Si prega di non fare riferimento al termine "ottimizzazione prematura" nelle vostre risposte :-)
Non lo farò, perché lo chiamo Premature Optimi * z * ation :-) –
Beh, almeno non hai modificato il mio elenco. – Adamski