我知道round方法可以四舍五入取近似值,但是现在有个题目要求近似到比本身大的最近的0.05,比如1.499->1.50, 4.625->4.65, 11.8125->11.85, 6.659->6.70各位大侠,这个应该怎么解决?多谢多谢

解决方案 »

  1.   

    怎么一个比一个概括阿,去查了,好像看到一个
    public MathContext(int setPrecision,
                       RoundingMode setRoundingMode)
    可是第一个参数是int型,不是我要的
      

  2.   

    Redduke,我的例子的意思是比11.8125大的最近的0.05,所以是11.85
      

  3.   

    给你个函数:
      public static double round(double v, int scale) {
        if (scale < 0) {
          throw new IllegalArgumentException(
              "The scale must be a positive integer or zero");
        }
        BigDecimal b = new BigDecimal(Double.toString(v));
        BigDecimal one = new BigDecimal("1");
        return b.divide(one, scale, BigDecimal.ROUND_HALF_UP).doubleValue();
      }
      

  4.   

    没怎么看懂,好像那个BigDecimal b没有用到阿
      

  5.   

    哦,没仔细看
    public static double ceil(double a)返回最小的(最接近负无穷大)double 值,该值大于或等于参数,并且等于某个整数so,一个解决方法是
    Math.ceil( arg*20)/20
      

  6.   

    Math.ceil( 11.8125*20)/20  == 11.85
      

  7.   

    Oracs你给的函数只是简单的四舍五入阿,并不能满足我的要求
      

  8.   

    redduke,用你的方法解决了,多谢了