将Double转换为String值保留每个数字

时间:2011-11-01 10:32:30

标签: java string type-conversion

如何将例如9.01236789E9的10位数的双精度值转换为字符串9012367890而不终止其任何数字?

我试过了9.01236789E9 * Math.pow(10,9),结果仍是双倍“9.01236789E18”

5 个答案:

答案 0 :(得分:9)

    double d = 9.01236789E9;    
    System.out.println(BigDecimal.valueOf(d).toPlainString());

答案 1 :(得分:7)

虽然10个数字应该可以保存而没有问题,但如果你对使用的实际数字感兴趣,你可能应该使用BigDecimal代替。

如果确实想要在不使用科学记数法的情况下格式化double,您应该只能使用NumberFormat来执行此操作或(从Java 6开始)简单的字符串格式化API:

import java.text.*;

public class Test
{
    public static void main(String[] args)
    {
        double value = 9.01236789E9;
        String text = String.format("%.0f", value);
        System.out.println(text); // 9012367890

        NumberFormat format = NumberFormat.getNumberInstance();
        format.setMaximumFractionDigits(0);
        format.setGroupingUsed(false);
        System.out.println(format.format(value)); // 9012367890
    }
}

答案 2 :(得分:0)

尝试String.format("%20.0f", 9.01236789E9)

注意虽然它从来都不是一个确切的值,但“保留每一个数字”并没有多大意义。

答案 3 :(得分:0)

你可以使用它。

String doubleString = Double.toString(inValue)

inValue ----->由您描述。您希望将double更改为字符串。

答案 4 :(得分:0)

在这种情况下,您也可以

double value = 9.01236789E9;
System.out.println((long) value); // prints 9012367890