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

Moh*_*sin 5 java string type-conversion

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

我试过9.01236789E9*Math.pow(10,9)但结果还是双"9.01236789E18"

Pri*_*ley 9

    double d = 9.01236789E9;    
    System.out.println(BigDecimal.valueOf(d).toPlainString());
Run Code Online (Sandbox Code Playgroud)


Jon*_*eet 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
    }
}
Run Code Online (Sandbox Code Playgroud)