int a=10000;
int b=20000;
a/b
我想保留2位小数,请问各位帮帮忙;解决就给分

解决方案 »

  1.   

    import java.text.*;
    class Test2
    {
    public Test2()
    {
    double a=10000;//要用double型,要不a/b永远得0;
    double b=20000;
    NumberFormat nbf=NumberFormat.getInstance();
    nbf.setMinimumFractionDigits(2);
    String c = nbf.format(a/b);
    System.out.println(c);
    }

    public static void main(String[] args)
    {
    Test2 test2 = new Test2();
    }
    }
      

  2.   

    public class Arith {    private static final int DEF_DIV_SCALE = 10;    private Arith() {    }    /**
         * 提供精確的加法運算
         * @param args
         */
        public static double add(double v1, double v2) {
            BigDecimal b1 = new BigDecimal(Double.toString(v1));
            BigDecimal b2 = new BigDecimal(Double.toString(v2));
            return b1.add(b2).doubleValue();
        }    /**
         * 提供了精確的減法運算
         * 
         * @param args
         */
        public static double sub(double v1, double v2) {
            BigDecimal b1 = new BigDecimal(Double.toString(v1));
            BigDecimal b2 = new BigDecimal(Double.toString(v2));
            return b1.subtract(b2).doubleValue();
        }
        
        /**
         * 提供了精確的乘法運算
         * @param args
         */
        public static double mul(double v1, double v2) {
            BigDecimal b1 = new BigDecimal(Double.toString(v1));
            BigDecimal b2 = new BigDecimal(Double.toString(v2));
            return b1.multiply(b2).doubleValue();
        }
        
        /**
         * 提供了(相對)精確的除法運算,當發生除不儘的情況時,精確到
         * 小數點以後110位
         * @param args
         */
        public static double div(double v1, double v2) {
            return div(v1, v2, DEF_DIV_SCALE);
        }
        
        /**
         * 提供了(相對)精確的除法運算,當發生除不儘的情況時,由scale參數指定
         * 精度,以後的數字四捨五入
         * @param args
         */
        public static double div(double v1, double v2, int scale) {
            if (scale < 0) {
                throw new IllegalArgumentException(
                        "The scale must be a positive integer or zero");
            }
            BigDecimal b1 = new BigDecimal(Double.toString(v1));
            BigDecimal b2 = new BigDecimal(Double.toString(v2));
            return b1.divide(b2, scale, BigDecimal.ROUND_HALF_UP).doubleValue();
        }
        
        /**
         * 提供了精確的小數位四捨五入處理
         * @param args
         */
        
        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_DOWN).doubleValue();
        }    public static void main(String[] args) {
            System.out.println(add(1.2321231, 3.7865765));
            System.out.println(sub(6.4523423, 1.2321231));
            System.out.println(mul(6.4523423, 3.7865765));
            System.out.println(div(6.4523423, 3.7865765, 5));
            System.out.println(round(3.7865765, 5));
        }
    }
      

  3.   

    import java.text.*;
    class Test2
    {
    public Test2()
    {
    double a=10000;//要用double型,要不a/b永远得0;
    double b=20000;
    NumberFormat nbf=NumberFormat.getInstance();//新建一个格式化器对象
    nbf.setMinimumFractionDigits(2);//设置最小保留两位小数
    nbf.setMaximumFractionDigits(2);//设置最大保留两位小数
    String c = nbf.format(a/b);//将a/b格式化后的值赋给c,注意是String型
    System.out.println(c);
    }

    public static void main(String[] args)
    {
    Test2 test2 = new Test2();
    }
    }