我有一个非常小的数字,我想将其转换为完整的字符串,不以任何方式缩写。我不知道这个数字可以有多小。
例如,当我运行以下代码时:
double d = 1E-10;
System.out.println(d);
它显示的是
1.0E-10
而不是0.000000001。我已经尝试使用
NumberFormat.getNumberInstance()
,但它格式化为0
。我不知道在DecimalFormat
上使用什么表达式来处理任何数字。假设你想要在数字前面添加 500 个零,使用以下方式:
double d = 1E-500;
那么你可以使用:
double d = 1E-10;
NumberFormat nf = NumberFormat.getInstance();
nf.setMaximumFractionDigits(Integer.MAX_VALUE);
System.out.println(nf.format(d));
5e-324
。 - kennytm您可以使用 setMinimumFractionDigits
和 setMaximumFractionDigits
方法来设置数字格式化器小数部分的最大和最小位数,这样就可以解决问题了。
System.out.println(new java.math.BigDecimal(Double.toString(1E-10)).stripTrailingZeros().toPlainString());
System.out.println(new java.math.BigDecimal("1E-10").toPlainString());
...如BigDecimal javadocs所解释的那样。
请看一下:http://java.sun.com/docs/books/tutorial/i18n/format/decimalFormat.html#numberpattern
我认为格式“0.####”可能有效。
1e-300
,你想要什么?300个零? - kennytm