将非常小的double转换为String

时间:2010-01-20 18:16:09

标签: java string double numbers

我的数字非常小,我希望将其转换为带有完整数字的字符串,而不是以任何方式缩写。我不知道这个数字有多小。

例如,当我跑:

double d = 1E-10;
System.out.println(d);

它显示1.0E-10而不是0.000000001。

我已经尝试NumberFormat.getNumberInstance(),但格式为0。我不知道在DecimalFormat上使用什么表达式来处理任何数字。

4 个答案:

答案 0 :(得分:10)

假设您在执行此操作时需要500个零:

double d = 1E-500;

然后你可以使用:

double d = 1E-10;
NumberFormat nf = NumberFormat.getInstance();
nf.setMaximumFractionDigits(Integer.MAX_VALUE);
System.out.println(nf.format(d));

答案 1 :(得分:3)

您可以使用setMinimumFractionDigitssetMaximumFractionDigits设置数字格式的分数中的最大和最小位数。应该解决问题。

答案 2 :(得分:2)

您可以使用以下方法在Java 5中使用BigDecimals执行此操作:

System.out.println(new java.math.BigDecimal(Double.toString(1E-10)).stripTrailingZeros().toPlainString());

请注意,如果您首先将double值作为String,那么最好使用:

System.out.println(new java.math.BigDecimal("1E-10").toPlainString());

...正如BigDecimal javadocs中所解释的那样。

答案 3 :(得分:-2)

查看:http://java.sun.com/docs/books/tutorial/i18n/format/decimalFormat.html#numberpattern

我认为格式“0。####”可能有用。