我正在使用 BigDecimal 来计算一些大实数。虽然我尝试了两种方法:
BigDecimal.toString()
或者BigDecimal.stripTrailingZeros().toString()
,它仍然不能满足我的要求。
例如,如果我使用stripTrailingZeros
:4.3000
变为4.3
但4.0
变为4.0
not 4
。以上两种方法都不能满足这些条件。所以,我的问题是:如何在 java 中完成它?
谢谢 :)
我正在使用 BigDecimal 来计算一些大实数。虽然我尝试了两种方法:
BigDecimal.toString()
或者BigDecimal.stripTrailingZeros().toString()
,它仍然不能满足我的要求。
例如,如果我使用stripTrailingZeros
:4.3000
变为4.3
但4.0
变为4.0
not 4
。以上两种方法都不能满足这些条件。所以,我的问题是:如何在 java 中完成它?
谢谢 :)
查看DecimalFormat类。我想你想要的是
DecimalFormat df = new DecimalFormat();
// By default, there will a locale specific thousands grouping.
// Remove the statement if you want thousands grouping.
// That is, for a number 12345, it is printed as 12,345 on my machine
// if I remove the following line.
df.setGroupingUsed(false);
// default is 3. Set whatever you think is good enough for you. 340 is max possible.
df.setMaximumFractionDigits(340);
df.setDecimalSeparatorAlwaysShown(false);
BigDecimal bd = new BigDecimal("1234.5678900000");
System.out.println(df.format(bd));
bd = new BigDecimal("1234.00");
System.out.println(df.format(bd));
Output:
1234.56789
1234
您还可以使用您选择的RoundingMode。使用提供给DecimalFormat构造函数的模式控制要显示的小数点数。有关更多格式的详细信息,请参阅DecimalFormat文档。
您可以DecimalFormat
按如下方式使用:
BigDecimal a = new BigDecimal("4.3000");
BigDecimal b = new BigDecimal("4.0");
DecimalFormat f = new DecimalFormat("#.#");
f.setDecimalSeparatorAlwaysShown(false)
f.setMaximumFractionDigits(340);
System.out.println(f.format(a));
System.out.println(f.format(b));
哪个打印
4.3
4
正如 Bhashit 指出的那样,默认的小数位数是 3,但我们可以将其设置为最大值 340。我实际上不知道DecimalFormat
. 这意味着如果您需要超过 340 个小数位,您可能必须自己操作string
给定的数字toString()
。