2012-06-11 34 views
-3

考虑以下条件:的Java如何在操作的BigDecimal值

  • 度的两个BigDecimal值:B1B2;
  • x - Integer;
  • b1> b2;

我需要找到

的最小值X这样

B2 * X> B1

例如,如果所有的值 - 整数,比:

if (b1%b2 == 0) { 
    x = b1/b2; 
} else { 
    x = b1/b2 +1; 
} 
+2

究竟是什么问题? – Jivings

+1

'BigDecimal'支持所有基本的算术运算;见例如http://docs.oracle.com/javase/1.5.0/docs/api/java/math/BigDecimal.html。我不确定问题是什么? –

+0

你确定你需要BigDecimal吗? –

回答

2

你可以使用

BigInteger x = b1.divide(b2, 0, RoundingMode.CEILING).toBigInteger() 
0

尝试:

BigDecimal bd1= .....; 
    BigDecimal bd2= .....; 

    BigDecimal tmp = bd2; 
    int x = 0; 
    while(tmp.compareTo(bd1) < 1){ 
     x++; 
     tmp = bd2.multiply(new BigDecimal(x)); 
    } 
    System.out.println("!!!!!!!!!!! " + x); 
0

像这样的事情?

 BigDecimal b1 = new BigDecimal(41); 
     BigDecimal b2 = new BigDecimal(10); 
     BigDecimal xBigDec; 
     BigInteger xBig; 
     int x; 
     if(BigDecimal.ZERO.equals(b2)){ 
      if(BigDecimal.ZERO.compareTo(b2)>0){ 
       x = 0; 
      }else{ 
       //Can't do! 
      } 
     }else{ 
      xBigDec = b1.divide(b2); 
      xBig = (xBigDec).toBigInteger(); 
      //you need to expand for negatives here 
      if(xBig.compareTo(BigInteger.valueOf(Integer.MAX_VALUE))>0){ 
       x = Integer.MAX_VALUE; 
      }else{ 
       x = xBig.intValue(); 
       if(b2.multiply(new BigDecimal(x)).equals(b1)){ 
        x++; 
       } 
      } 
     } 
+0

是否有原因'x'不能是'BigInteger'或'long'?如果'x