java如何直接将double转换为字符串?

时间:2014-11-10 22:57:25

标签: java string double

我想将double转换为字符串。 如果我使用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);

3 个答案:

答案 0 :(得分:5)

可能有更好的选择,但你可以使用像...这样的东西。

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属性...

答案 1 :(得分:1)

这是DecimalFormat类的主要用例。

你需要的东西是

DecimalFormat formatter = new DecimalFormat("#.#");
String output = formatter.format(input);

DecimalFormat的默认行为是将小数部分舍入到一个小数位。要改变这种情况,请使用MadProgrammer设置formatter.setMaximumFractionDigits(100)之类的解决方案。

答案 2 :(得分:0)

BigDecimal.valueOf(value).setScale(decimalLimit, RoundingMode.HALF_UP).toPlainString()