什么java对象最适合保存微小的十进制值,例如10 ^ -25?使用最小空间时,哪个对象最准确地保持数字的值?
我只需要存储显示值,而不是用于任何计算。我还可以使用其他替代方案吗?
答案 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位数的精度,所以除非你需要绝对精确的值(如财务计算),我会说双倍是你最好的选择