处理整数时的精度是多少?数据类型代表整数钱?

时间:2015-10-08 03:57:12

标签: java

我正试图用Java中的数据类型代表钱。但是有一个条件: 钱总是一个整数 (例如$ 500,$ 10000000)。我想到的选择是:

  • Double :比其他可用选项更快。那就是说,会有loss of precision吗?此外,是否足以代表任何金额?我的意思是,钱可以变得非常大,所以是否足以存储所有这些价值?
  • BigInteger :这里的好处是没有限制,显然没有精度损失。也就是说,计算的速度可能会受到打击。
  • 我应该使用哪一个?

    编辑:这不是重复,不同之处在于我需要使用 仅限整数 来赚钱,这带来了精确性和适用性的问题!

    1 个答案:

    答案 0 :(得分:1)

    请勿使用double。如您所知,浮点计算可能会导致精度下降。

    BigInteger可行,但它是一种参考类型,使用起来更加尴尬。

    使用long。最大值为9223372036854775807,对于实际目的而言可能足够大。