double dou=54.465412;
输出如下
54.5

解决方案 »

  1.   

    楼主再试试:
    double dou=54.465412; 
    System.out.println(dou);这个打出来到底是啥。我这可是正常的啊。
      

  2.   

    double dou=54.465412; 
    BigDecimal  bd = new BigDecimal(dou).setScale(1, BigDecimal.ROUND_HALF_UP);
      

  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();
    }
    public static void main(String[] args){
    double d = 4.345678;
    System.out.println(d);
    System.out.println(round(d,1));
    System.out.println(round(d,2));
    System.out.println(round(d,3));
    }
      

  4.   


    double dou=54.465412; 
    System.out.println(new DecimalFormat("#0.0").format(dou));
      

  5.   

    如果你想保存任意精度的,就不要用double .用BigDecimal吧,精度不会有损失。
      

  6.   

    println()打印的包含有小数位数的数字时底层实现归到底还是使用了截取来处理的。
      

  7.   

    double dou=54.465412;
    BigDecimal  bd =chinese wholesalers
    uggigDecimal(dou).setScale(1, BigDecimal.ROUND_HALF_UP);