1.编写一个四舍五入的函数,要求可以保留到小数后面的任意一位(如3.1415927保留到小数点后第3位后得到3.142)
2.编写一个函数(不需要写出完整的类定义),计算两个日期(java.util.date)对象间相隔的天数,代码量不的超过10行。

解决方案 »

  1.   

    public class TestRound
    { public static double fun(double d, int n)
    {

    for(int i=0; i<n;i++)
    d*=10;
    d = Math.round(d);
    for(int i=0;i<n;i++)
    d/=10;
    return d;
    }

    public static void main(String[] args)
    {
    System.out.println(fun(3.1415926,3));
    }
    }
      

  2.   

    long fun(Date one, Date two)
    {
    long m = one.getTime()>two.getTime()?one.getTime()-two.getTime():two.getTime()-one.getTime();
    System.out.println(m);
    long d = m/86400000;
    long x = m%86400000;
    return d;
    }
      

  3.   

    改造一下:long fun(Date one, Date two)
    {
    long m = one.getTime()>two.getTime()?one.getTime()-two.getTime():two.getTime()-one.getTime();
    System.out.println(m);
    long d = m/(24l * 60 * 60 * 1000);
    long x = m%(24l * 60 * 60 * 1000);
                      if (x != 0) d ++;
    return d;
    }
      

  4.   

    2   java.util.Date --- getTime() 
              返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数,
     
       (date1.getTime()-date2.getTime())/(24*60*60*1000)小数如何取整lz自己看着办。
    1970 年 1 月 1以前的不知怎么办。
      

  5.   

    1.     public String numberDeal(double num,int n){
               NumberFormat nf=NumberFormat.getInstance();
               nf.setMaximumFractionDigits(n);
               nf.setMinimumFractionDigits(n);
               return nf.format(num);
           }
    2.     public long dateDivide(Date begin,Date end){
      long begintime=begin.getTime();
      long endtime=end.getTime();
      long value=endtime-begintime;
      if(value%(1000*60*60*24)==0)
          return value/(1000*60*60*24);
      else
          return (value/(1000*60*60*24))+1;
           }
      

  6.   

    问一下,日期对象那题,如果是date1 = 2007-1-1 9:00,  date2 = 2007-1-1 10:00
    返回的是1天还是0天呢?没理解错的话,应该是0天吧我觉得应该把两个目标对象整理到"天",再比较,代码如下:
        public long checkDate(Date d1, Date d2){
            long d1Fix = d1.getTime() / (1000 * 60 * 60 * 24L);
            long d2Fix = d2.getTime() / (1000 * 60 * 60 * 24L);
            return ( d1Fix > d2Fix ? d1Fix - d2Fix : d2Fix - d1Fix);
        }
      

  7.   

    weijieut() 楼的方法取3位或其后几位都行,但唯独变成取2位后就不行了植就变成了3.1399999999999997 请高手帮解释下这是为什么?要怎么避免?
      

  8.   

    /**    * 提供小数位四舍五入处理。    * @param v 需要四舍五入的数字    * @param scale 小数点后保留几位    * @return 四舍五入后的结果    */   public static double round(double v,int scale){ 
      
      String temp="###0."; 
      for (int i=0;i<scale ;i++ ){ 
       temp+="0"; 
      } 
      return Double.valueOf(new java.text.DecimalFormat(temp).format(v)); 
        } 
    从高手那看到了这个方法~~~~