我需要以双重格式存储17774132, 但是因为我得到了1.7774132E7,所以看起来双倍是小的。
我该如何克服这个问题?我需要一些可以用浮点来保存它的原语。
谢谢
答案 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以获得长期过长的合法整数。