开发者

convert very small double to a String

开发者 https://www.devze.com 2022-12-17 19:35 出处:网络
I have a very small number and I want to convert it to a String with the full n开发者_如何学Goumber, not abbreviated in any way. I don\'t know how small this number can be.

I have a very small number and I want to convert it to a String with the full n开发者_如何学Goumber, not abbreviated in any way. I don't know how small this number can be.

for example, when I run:

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

it shows 1.0E-10 instead of 0.000000001.

I've already tried NumberFormat.getNumberInstance() but it formats to 0. and I don't know what expression to use on a DecimalFormat to work with any number.


Assuming that you want 500 zeroes in front of your number when you do:

double d = 1E-500;

then you can use:

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


You can set the maximum and minimum number of digits in the fraction of a numberformatter with setMinimumFractionDigits and setMaximumFractionDigits. that should fix the problem.


You can do it with BigDecimals in Java 5 using:

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

Note that if you have the double value as a String in the first place, you would be better off using:

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

... as explained in the BigDecimal javadocs.


Have a look at: http://java.sun.com/docs/books/tutorial/i18n/format/decimalFormat.html#numberpattern

I think the format "0.####" might work.

0

精彩评论

暂无评论...
验证码 换一张
取 消