黑马程序员技术交流社区

标题: 如何把float类型变量的平均值转变成只有两位小数? [打印本页]

作者: Maple_枫    时间: 2014-4-2 16:09
标题: 如何把float类型变量的平均值转变成只有两位小数?
本帖最后由 Maple_枫 于 2014-4-5 11:37 编辑
  1. //所需变量
  2.         private int on;
  3.         private String name;
  4.         private int age;
  5.         private float java;
  6.         private float c_shar;
  7.         private float html;
  8.         private float sql;
  9.         private float sum;
  10.         private float avg;
  11. //平均值的赋取函数
  12. public void setAvg()
  13.         {
  14.                 this.avg=sum/4;
  15.         }
  16.         public float getAvg()
  17.         {
  18.                 return avg;
  19.         }
  20. public static void sumRanking(Student[] arr)//按总分排序
  21.         {
  22.                 for(int x=0;x<arr.length-1;x++)
  23.                 {
  24.                         for(int y=x+1;y<arr.length;y++)
  25.                         {
  26.                                 if(arr[x]!=null&&arr[y]!=null)
  27.                                 {
  28.                                         if(arr[x].getSum()<arr[y].getSum())
  29.                                         {
  30.                                                 Student t=arr[x];
  31.                                                 arr[x]=arr[y];
  32.                                                 arr[y]=t;
  33.                                         }
  34.                                 }
  35.                         }
  36.                 }
  37.                 Admin.print(arr);
复制代码


//遍历此数组
public static void print(Student[] arr)//遍历Student数组
        {

                System.out.println(mx);
                for(int i=0;i<arr.length;i++)
                {
                        if(arr!=null)
                        {
                                arr.setSum();
                                arr.setAvg();
                                System.out.println(arr);
                        }
                }
               
        }

作者: Engle    时间: 2014-4-2 16:17
有2种解决办法:
方法1:
float f = 34.232323;
BigDecimal b = new BigDecimal(f);
// b.setScale(2, BigDecimal.ROUND_HALF_UP) 表明四舍五入,保留两位小数
float f1 = b.setScale(2, BigDecimal.ROUND_HALF_UP).floatValue();

方法2:
float scale = 34.236323;
DecimalFormat fnum = new DecimalFormat("##0.00");
String dd=fnum.format(scale);
System.out.println(dd);
作者: 闲人    时间: 2014-4-2 16:20
  1. float x;
  2. float y = (float)(Math.round(x*100))/100;
复制代码

通过四舍五入的方法,把得出的结果,转换成2位小数,第二行中的100,就是转换的条件,
你想换成几位,就用几个0
作者: xuehuayous    时间: 2014-4-2 16:21
float   a   =   123.2334f;  
float   b   =   (float)(Math.round(a*100))/100;
把a乘以100后四舍五入,再除以100,最后强制转换为float类型,希望对你有帮助!
作者: _Water    时间: 2014-4-2 16:23
其实把float类型变量变成只有两位小数有多种方法的,本人比较习惯下面的方式,修改后的getAvg()为:
public String getAvg()
  {
            DecimalFormat   fNum   =   new   DecimalFormat("##0.00");  
            String   res = fNum.format(avg);      
            return   res;
  }
作者: Maple_枫    时间: 2014-4-2 16:47
Engle 发表于 2014-4-2 16:17
有2种解决办法:
方法1:
float f = 34.232323;

谢谢:lol
作者: Engle    时间: 2014-4-2 17:20
不客气,互相帮助嘛




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2