可能这是一个真正的初学者问题,但我无法在网上找到答案。我有一个Oracle数据库,其表的主键是NUMBER(16)并且填充了一个序列,其最大值为999999999999999999999999999。
我应该使用什么java类型来保存序列值? long,biginteger还是bigdecimal?
提前谢谢
答案 0 :(得分:5)
长期应该这样做,因为它的最大值为2 ^ 63 - 1
答案 1 :(得分:1)
首先,请使用大量的科学记数法。我花了很多时间来确定你发布的数字是10 27 。
如果我理解你的问题,我们可能将数据库从中删除。我是否正确地认为你的问题归结为“我需要存储高达10 ^ 27的正整数。适合这种情况的最小数据类型是什么?”
如果是这样,快速google表明long
肯定适合。 BigInteger
和BigDecimal
都肯定会包含您的号码,因为它们是精确的,但您不需要它们,并且它们可能会使您的代码更多笨重(由于不是原始人)。因此,除非您特别需要Bignum功能和方法,否则请使用long
。 (而且我看不出为什么你使用BigNecimal而不是BigInteger作为绝对整数的输入的原因。)