我想将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);
答案 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()