我想将双精度转换为字符串。
如果我使用Double.toString或String.valueOf,它会给人一些可怕的感觉,如5e-10或类似的东西。

如果我有x = 0.00000032,我想简单地拥有字符串“ 0.00000032”。

我做了很长一段路,我想知道是否有更好(更短)的方法。

            szText += String.format("%.20f", dOutput);

            iZeros = 0;
            for(int i=szText.length() - 1; i>=0; i--)
            {
                if(szText.charAt(i) == '0')
                    ++iZeros;
                else break;
            }

            szText = szText.substring(0, szText.length() - iZeros);

最佳答案

也许有更好的选择,但是您可以使用...

NumberFormat nf = NumberFormat.getNumberInstance();
nf.setMaximumFractionDigits(100);

double x = 0.00000032d;
System.out.println(x);
System.out.println(nf.format(x));


哪个输出

3.2E-7
0.00000032


您可能需要根据特定需要使用maximumFractionDigits属性...

09-12 02:19