用下面的方法String formatFloat(float f)
{ String returnStr="";
  String postStr="0.0";
  String tempStr=String.valueOf(f);
  int x=-1;
  int pointPos=tempStr.indexOf(".");
  if(tempStr.startsWith("0."))
    postStr=tempStr;
  else
  {
    postStr="0."+tempStr.substring(0,pointPos)+tempStr.substring(pointPos+1,tempStr.length());
    x=pointPos-1;
  }
  returnStr=getReturnStr(postStr,x);
  return returnStr;
}
//_________________________________
String getReturnStr(String tempStr,int x)
{ int len=tempStr.length();
  String subStr=tempStr.substring(2,len);
    while(subStr.startsWith("0"))
      {
      subStr=subStr.substring(1,subStr.length());
      x--;
      }
    int subLen=subStr.length();
    if(subLen>6)
    {
    subStr=subStr.substring(0,6);
    }
    else if(subLen<6)
    {
      for(int i=0;i<(6-subLen);i++)
      {
        subStr=subStr+"0";
      }
    }
    String returnStr="0.0";
    if(x<0)
    returnStr=subStr.substring(0,1)+"."+subStr.substring(1,subStr.length())+"E"+String.valueOf(x);
    else if(x==0)
    returnStr=subStr.substring(0,1)+"."+subStr.substring(1,subStr.length());
    else
    returnStr=subStr.substring(0,1)+"."+subStr.substring(1,subStr.length())+"E+"+String.valueOf(x);
    return returnStr;
}

解决方案 »

  1.   

    import java.text.*;class fnum
    {
      DecimalFormat df = new DecimalFormat("#,##0.0##"); 
      
      public static void main(String k[]){
         fnum f = new fnum();
      }
      
      public fnum(){
         StringBuffer d = new StringBuffer("");
         df.format(123443123.3343333,d,new FieldPosition(2));
         
         System.out.println(d);
      }
      
      
      
    }
      

  2.   

    z_yheart(年轻的心)你的代码不对,没考虑负数与已经使用了科学计数法的情况。
    hexiaofeng(java爱好者)谢谢提供思路。