比如 long a = 5; long b = 10;那么我想求 a/a+b 的百分比结果,精确到0.00%.请教各位 该如何运算?

解决方案 »

  1.   

    import java.text.DecimalFormat;
    public class Test01 {    public static void main(String[] args) {
            long a = 5;
            long b = 10;
            double percent = (double)a / (a + b);
            DecimalFormat format = new DecimalFormat("0.00%");
            String result = format.format(percent);
            System.out.println(result);
        }
    }需要将除号两端的任何一个数转为 float 或者是 double 才能计算出小数位数,
    否则的话整数类型与整数类型计算得出的结果还是整数类型,直接用 long/long
    或者 int/int 的话,得出的结果是数学值的舍尾取整。而转成 float 或 double 就不一样了,任何数与 float 和 double 进行计算时
    会自动地进行类型提升,即将另外一个 long 数据提升到 double 类型再进行计
    算的。写成这样也是一样的 a / (double)(a + b)
      

  2.   

    a/a+b和 a/(a+b)是两回事!long a=5;
    long b=10;String str=new String(a*1.0/(a+b));
    str=str.subString(0,str.indexOf(".")+2);double c=Double.valueOf(str);
      

  3.   

    import java.math.*;class LongTest{
    public static void main(String []args){
    long a = 5; 
    long b = 10; 

    BigDecimal x = BigDecimal.valueOf(a + b);
    BigDecimal d = BigDecimal.valueOf(a).divide(x, new MathContext(2));

    System.out.println("a / (a + b) = " + d);


    }
    }