将float num=123.0001f,保留两位小数,格式化后返回float类型,如: float num = 123.00f;
请帮忙转下!我格式成String可以保留两位小数,转为float后又变成一位了。怎么处理呢??

解决方案 »

  1.   

    DecimalFormat df = new DecimalFormat("###.##");
         float num=123.0001f;
         num = Float.valueOf(df.format(num));
         System.out.println(num);
      

  2.   

    那些就没有多太意 义了。
    如果你想在显示的时候有两位,那只要转为String处理就可以了。
      

  3.   

    df.setMaximumFractionDigits(2); 
    df.setMinimumFractionDigits(2);
    加上这两句就ok
      

  4.   

    试了还是不行。可以尝试对生成的string做处理,如果小数为1位,就给补0.另外:请教下大家, 用numberformat生成的数字,会带有分为符号,如: 1,120.00怎么把逗号去掉的,我看api没有相关的处理方法。
      

  5.   

    float 就是不准的, 只需要在输出的时候格式化就行了,否则不用管它。
      

  6.   

    看到不仔细。df.setGroupingUsed(false);
    NumberFormat df = NumberFormat.getInstance(Locale.CHINESE);
         df.setMaximumFractionDigits(2); 
         df.setMinimumFractionDigits(2); 
         df.setGroupingUsed(false);
         float num = 1120.00243f;
         String s =df.format(num);
         System.out.println(s);//1120.00
         s = (s.substring(s.indexOf("."),s.length())).length()<2 ? s+"0" : s;
         System.out.println(s);//1120.00
      

  7.   


    NumberFormat df = NumberFormat.getInstance();
         df.setMaximumFractionDigits(2); 
         df.setMinimumFractionDigits(2); 
         df.setGroupingUsed(false);
         float num = 1120.00243f;
         String s =df.format(num);
         System.out.println(s);
      

  8.   

    他要的是返回float,不是要String。          loat num = 123.11111f; //我把你的123.0001f替换了
      
      String str = String.valueOf(num);

      BigDecimal bd = new BigDecimal(str);
      
      System.out.println(bd.setScale(2, BigDecimal.ROUND_HALF_UP).floatValue());
      //你的123.0001f为什么只有1个0,是因为小数点后面都是连续的0。但如果不是连续
    的0,是能够输出小数点后2位的。
      

  9.   

    public static void main(String[] args) {
    // TODO Auto-generated method stub
    float num=123.0001f;
    System.out.printf("%.2f", num);
    }