例如:
double d1=3.43621;
double d2=3.0;
用什么方式能把这两个变量用同一种方法四舍五入到小数后两位
显示为
d1=3.44;
d2=3.00;

解决方案 »

  1.   

    1.    double value = 22.365454;    DecimalFormat df = new DecimalFormat("##.00");
        value = Double.parseDouble(df.format(value));
        System.out.println(value);
      

  2.   

    2.    double d = 22.365434;
        BigDecimal a = new BigDecimal(d);
        //第一个参数2是小数点后保留几位,第二个2是四舍五入(如果为1则直接舍掉后面多余的位)
        System.out.println("a.setScale(2,2)=" + a.setScale(2, 2));
      

  3.   

    转贴//   四舍五入取小数点后   2   位。   
      float   f   =   1.234567F;   
      f   =   float.Parse(f.ToString("F2"));   
      Console.WriteLine(f.ToString()); 
    Math.Round()这个是四舍五入的   
      f.ToString("0.00");这个只是用来显示的 double   d   =   1.234567;   
      Console.WriteLine(d.ToString("F")); Math.Round(double1,   2);   
      這是最正宗的方法如果你要隻顯示到屏幕也可以這樣   
      Console.WriteLine(double1.ToString("###,###,###.##"); 
    很多都是四舍五入的,只好用这个笨办法:   
        
      double   d   =   (double)((long)(2.378325*100))/100;   
      MessageBox.Show(d.ToString(".##")); 刚才贴的那个方法如果末尾刚好是0数字就会不足2位小数位,改为这个:   
        
      MessageBox.Show(((double)((long)(45452.318325*100))/100).ToString(".00"));   
        
      例如:2.3023   处理后得到   2.30 double   aa=345.6443;   
      int   bb;   
      Decimal   cc;   
      bb=Decimal.Round(aa,2);   
      OK了 
    double   d   =   2.378325;   
      d   =   double.Parse(d.ToString("0.00"));   
      不过这样会四舍五入,结果是2.38 1\string   str="2.378325";   
      str=str.Substring(   x,y);用remove也可以   
      2\double   d   =   2.378325*100;……这样就更好处理一些   笨方法   
        
      double   d=2.378325;   
      int   i=d.ToString().LastIndexOf(".");   
      if(i!=-1)   
      {   
            d=Convert.ToDouble(d.ToString().Substring(0,i+3));   
      }   
      else   
      {   
      d=d;   
        
      } 
      

  4.   

    I服了YOU!
    错误的也叫全??
    =========================
    double   d   =   2.378325;   
      d   =   double.Parse(d.ToString("0.00"));   
      不过这样会四舍五入,结果是2.38 =========================
    看看这代码能执行不???错误百出
      

  5.   

    上面的代码没有一种在JAVA中是正确的!明显的不是JAVA代码
      

  6.   

    你丫的煞笔,第一个要是5不进我把代码吃了,煞笔一个
    第二个是老子疏忽没说清楚,我承认!第二个参数应该是5才正确!还给你不少思想上提示,我靠,吗的语法都不对, double.Parse()不是对象的东西都拿来调用方法,我不知道从那里能给你思想上提示!吗的郁闷!跟你个煞笔较什么劲!
    吗的老子热心帮助你,帮你纠正别人的错误,你他吗还狗咬吕洞宾,我真他吗的贱!
      

  7.   

    年轻人,要走的路还很长!这种基础的问题还要搞这么久!还要把对的说成错的!JAVA API都不会用!靠这样的学习态度JAVA才刚入门!学习态度和方法还都差太远!其实上面我提到的两个类都是JAVA中用来处理数字格式化问题的!好的学生当知道这两个类的时候就应该已经知道怎么做了!类里面原代码,不是找不到!只是看你是否愿意去挖掘!
        奉劝你一句,正确的学习方法和态度才是你走出困境的钥匙!态度将决定你的未来!
        还很多的问题需要你自己慢慢体会!我就不说了,说多了也不好!
        今天从你这我也学到了东西,虽然你让我很生气,但是还是应该感谢你的!因为你让我更加坚定确信的知道了第一种用法的正确性,第二种用法我一般不常用,今天我也把第二种用法研究的更加透彻了!
        三人行,必有我师!记得尊重别人你才能赢得天下!
        请记住一个前辈的肺腑!对你没有坏处!
      

  8.   

    最后一个回帖,收回上面的脏话!一时气愤,请见凉!不过"我给你分就不错了"你这句确实让人很气愤!提醒你一句,在CSDN上喜欢帮助别人热心肠的人很多!如果没有这些人你的问题谁来解答?而今天你却严重侮辱了这些人的其中之一!当然我不会因此而降低我帮助新人的热情!因为我也曾经无知过!只是想告诉你这些人值的你去尊重!希望不会再有第二个我出现!
      

  9.   

    谢谢你的教悔,以后我会注意这个问题的,不过我还是要说第一个方法的确是到6才进位的,这是我试过之后才说的,要不我不会说到6才进位的,由于我JAVA学的时间短又一直在学新的框架,所以JAVA基础很差,在上面多有得罪还请见凉,对不起,以后我会注意的
      

  10.   

    通过查找API我发现你的第二种方法不错,不过里面的第二个参数要四舍五入的话也不是5而是4
      

  11.   


    要学会变通,不要死用别人给你的答案.那只是其中一种用法而已,应该再仔细研究DecimalFormat此类的用发:
    DecimalFormat此类格式化数字以后返回的是字符串,用#号格式化,位数不够的时候不补0,用0格式化位数不够的时候补0.
     
    我上面给你写的是把格式化后的字符串转化成了double类型的数字,自然会把多余的无意义的0去掉!你直接输出System.out.println(df.format(value));就能看到真实效果!
      

  12.   

    当然输出的还是不补0的了,我要是连这点都想不到都试,那我还真是别去当程序员了,我一直不明白的是一件事,为什么用这个方法在输出的时候大于2的尾数取小数后两位的四舍五入都好使,等小于2大于0的就不理想了,例0.015输出就会是0.01,页0.0151则输出0.16,小于0的我没试,所以我当时很生气,就没给你太多的分,最后我是按double   d = (double)((long)(2.378325*100))/100;   
    的这个思想自己编的算法,这是我很郁闷的事,Java API的这个方法我都看了,就差没看原码了
      

  13.   

    up一下,lip009(深蓝忧郁) 还是给我们大伙帮了不少忙的...