necesito para codificar un BigDecimal
de forma compacta en un ByteBuffer
para sustituir a mi actual esquema (basura) que codifica (escribir el BigDecimal
como una codificación UTF-8 String
precedido de un byte que indica la longitud String
).BigDecimal escala óptima para la codificación
Dado que BigDecimal
es efectivamente un valor entero (en el sentido matemático) y una escala asociada, estoy planeando escribir la escala como un solo byte seguido de un número VLQ encoded. Esto debería cubrir adecuadamente el rango de valores esperados (es decir, la escala máxima 127).
Mi pregunta: Cuando encuentre valores grandes como 10,000,000,000 es claramente óptimo codificar esto como el valor: 1 con una escala de -10 en lugar de codificar el entero 10,000,000,000 con una escala de 0 (que ocupará más bytes) . ¿Cómo puedo determinar la escala óptima para un BigDecimal
dado? ... En otras palabras, ¿cómo puedo determinar la escala mínima posible que establezco asignar un BigDecimal
sin tener que realizar ningún redondeo?
Por favor, no hacer referencia al término "optimización prematura" en sus respuestas :-)
No lo haré, porque lo llamo Premature Optimi * z * ation :-) –
Bueno, al menos no ha editado mi búsqueda. – Adamski