我的数字非常小,我希望将其转换为带有完整数字的字符串,而不是以任何方式缩写。我不知道这个数字有多小。
例如,当我跑:
double d = 1E-10;
System.out.println(d);
它显示1.0E-10
而不是0.000000001。
我已经尝试NumberFormat.getNumberInstance()
,但格式为0
。我不知道在DecimalFormat
上使用什么表达式来处理任何数字。
答案 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)
您可以使用setMinimumFractionDigits
和setMaximumFractionDigits
设置数字格式的分数中的最大和最小位数。应该解决问题。
答案 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。####”可能有用。