我需要将BigDecimal
紧凑地编码为ByteBuffer
以替换我当前的(垃圾)编码方案(将BigDecimal
写为UTF-8编码的String
前缀带有表示String
长度的字节。
鉴于BigDecimal
实际上是整数值(在数学意义上)和相关的比例,我计划将比例写为单个字节,后跟VLQ encoded整数。这应该足以涵盖预期值的范围(即最大标度127)。
我的问题:当遇到像10,000,000,000这样的大值时,将其编码为值为1显然是最佳的:1为-10,而不是编码整数10,000,000,000,其标度为0(这将占用更多字节)。如何确定给定BigDecimal
的最佳比例? ...换句话说,我如何确定我设置的最小可能比例BigDecimal
而不必执行任何舍入?
请不要在答案中引用“过早优化”一词: - )