字符串巨大的十进制数在Java中

时间:2018-05-30 12:26:31

标签: java double

double a=816992306.6297043221;
System.out.println("a="+a);

这个问题是这个数字对于double来说太大了,它给出了以下输出:

a=8.169923062970433E7

当我减少数字时,结果会正确显示。 这个问题的有效解决方案是什么?

2 个答案:

答案 0 :(得分:2)

您可以使用BigDecimal号码代替double

  

不可变,任意精度带符号的十进制数。

BigDecimal可以表示具有选择精度的任何数字

Double在最大值和最小值上有限制,在精度上

答案 1 :(得分:0)

我认为这是一个精确的问题。

https://docs.oracle.com/javase/1.5.0/docs/api/java/util/Formatter.html#syntax

您可以查看此链接以了解格式。

您可以使用DecimalFormat Class

double d1 = 3.14159;
double d2 = 1.235;

DecimalFormat format = new DecimalFormat("#.##");

double roundedD1 = format.format(d1); // 3.14
double roundedD2 = format.format(d2); // 1.24

如果要在运行时设置精度。

format.setMaximumFractionDigits(precision);