我有一个非常小的数字,我想将其转换为具有完整数字的字符串,而不是以任何方式缩写。我不知道这个数字有多小。将非常小的双倍转换为字符串
例如,当我运行:
double d = 1E-10;
System.out.println(d);
它显示1.0E-10
代替0.000000001。我已经试过NumberFormat.getNumberInstance()
,但它的格式为0
。我不知道在DecimalFormat
上使用什么表达式来处理任何数字。
我有一个非常小的数字,我想将其转换为具有完整数字的字符串,而不是以任何方式缩写。我不知道这个数字有多小。将非常小的双倍转换为字符串
例如,当我运行:
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 2010-01-20 19:36:34
谢谢,我不知道。 顺便说一句,你从哪里得到这个数字? – ryanprayogo 2010-01-20 19:44:14
http://en.wikipedia.org/wiki/Double_precision_floating-point_format#IEEE_754_double_precision_binary_floating-point_format:_binary64 – kennytm 2010-01-21 03:55:33
看一看:http://java.sun.com/docs/books/tutorial/i18n/format/decimalFormat.html#numberpattern
我认为,格式为 “0 ####” 可能会奏效。
您可以使用setMinimumFractionDigits
和setMaximumFractionDigits
来设置数字格式小数的最大和最小位数。应该解决这个问题。
可以使用与BigDecimals的做它在Java 5中:
System.out.println(new java.math.BigDecimal(Double.toString(1E-10)).stripTrailingZeros().toPlainString());
请注意,如果您将double值作为字符串放在第一位,则最好使用:
System.out.println(new java.math.BigDecimal("1E-10").toPlainString());
......正如BigDecimal javadocs中所解释的那样。
但是如果打印'1e-300',你想要什么? 300零? – kennytm 2010-01-20 18:18:25