BigDecimal编码的最佳比例

时间:2011-10-21 09:12:40

标签: java math bit-manipulation bigdecimal

我需要将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而不必执行任何舍入?

请不要在答案中引用“过早优化”一词: - )

1 个答案:

答案 0 :(得分:7)

BigDecimal#stripTrailingZeros似乎正在这样做。