在Java中存储大的十进制数

时间:2011-10-06 15:19:10

标签: java

我需要以双重格式存储17774132, 但是因为我得到了1.7774132E7,所以看起来双倍是小的。

我该如何克服这个问题?我需要一些可以用浮点来保存它的原语。

谢谢

4 个答案:

答案 0 :(得分:5)

在java中,如果要对包含分数的大数进行精确计算,则应使用java.math.BigDecimal类。整数对应的是java.math.BigInteger。

此外,我认为双重可以容纳17774132,它只是显示称为“E符号”的东西的值,科学符号表示数字。请参阅:http://en.wikipedia.org/wiki/Scientific_notation#E_notation

答案 1 :(得分:2)

记住这意味着1.7774132 * 10 ^ 7,因此该值表示为:

1.7774132 * 10000000

这是一个很大的数字,你不觉得吗?

默认情况下,如果需要,Java会在scientific notation上输出。像这样的大数字用科学记数法表达。

答案 2 :(得分:0)

1.7774132E7与17774132完全相同。它只显示在scientific notation中。 double能够保持这个值。正如其他人所说,如果您担心尺寸或准确性,请使用BigDecimal

答案 3 :(得分:0)

首先,希望您能够识别带有浮点十进制表示的issues

17774132相当于1.7774132E7; “E7”表示它乘以10^7。如果您的问题是 显示,则可以使用NumberFormat

请注意,17774132实际上是一个整数,远低于int基元类型的约21亿的阈值。如果您实际使用整数,long基元类型可以让您更高。

如果您希望以不同的方式表示数字并且它不是整数,您可以尝试BigDecimal(或BigInteger以获得长期过长的合法整数。