1.23 变成1.3 1.223变成1.23 是无规律的。也就是说后面的如果不是0就要往前面进一位。谢谢各位了。Math.ceil()这个是取整的好像。不是我要的。

解决方案 »

  1.   

    这个有点困难,因为浮点数本身就不精确的,很难确定小数点后面有几位有效数。
    public static void main(String[] arg) {
      double d = 1.22354564;
      int k = 1;
      double tmp = d * k;
      while(tmp % 1 != 0) {      
        k *= 10;
        tmp = d * k;      
      }
      k /= 10;
      tmp = Math.ceil(d * k) / k;    
      System.out.println(tmp);
    }
      

  2.   

    改一下,有点问题:tmp = (k != 0) ? Math.ceil(d * k) / k : d;
      

  3.   

    如果你用精确表示的BigDecimal,可以这么做
    BigDecimal decimal = new BigDecimal("1.23");
    System.out.println(decimal);
    decimal = decimal.setScale(decimal.scale() - 1, BigDecimal.ROUND_HALF_UP);
    System.out.println(decimal);
      

  4.   

    错了,应该是
    decimal = decimal.setScale(decimal.scale() - 1, BigDecimal.ROUND_CEILING);