难以置信的小十进制的最佳Java对象

时间:2011-03-21 14:54:53

标签: java data-structures decimal

什么java对象最适合保存微小的十进制值,例如10 ^ -25?使用最小空间时,哪个对象最准确地保持数字的值?

我只需要存储显示值,而不是用于任何计算。我还可以使用其他替代方案吗?

6 个答案:

答案 0 :(得分:7)

将其存储为字符串。如果您不进行计算,则无需使用数值数据类型。

答案 1 :(得分:4)

BigDecimal会做得很好。

BigDecimal dec = BigDecimal.valueOf(1, -25);

首选字符串的主要原因是您可以更改/自定义格式。如果你把它保存为一个字符串,那么在你解析它之前它会被卡在它原来的任何格式中,这意味着你不能进行本地化等等。

答案 2 :(得分:4)

如果您确实不需要使用这些值进行任何计算,String将是hacky但足够。或者,您可以使用任意精度java.math.BigDecimal类。

答案 3 :(得分:2)

你可以使用double,如果还不够,你也可以使用BigDecimal类。但是,如果你没有计算任何东西,我只会按照收到它们的方式将它们存储为字符串。

答案 4 :(得分:1)

在处理十进制数时,总是需要权衡空间与精度。浮点数(和双精度数)在其范围的最末端具有较低的准确度,但比BigDecimal更节省空间。并且当表示某些数字(如0.1)时,它们可以生成无限系列。

使用BigDecimal。

答案 5 :(得分:1)

BigDecimal将完全准确但使用(相对)大量空间。只是一个普通的原始双精度将给你15位数的精度,所以除非你需要绝对精确的值(如财务计算),我会说双倍是你最好的选择