-3

次の条件が与えられます。

  • 2 つの BigDecimal 値: b1b2
  • x - 整数。
  • b1 > b2 ;

私は見つける必要があります

となるxの最小値

b2 * x > b1

たとえば、すべての値が整数の場合:

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

4 に答える 4

2

あなたが使うことができます

BigInteger x = b1.divide(b2, 0, RoundingMode.CEILING).toBigInteger()
于 2012-06-11T11:18:43.287 に答える
2

BigDecimalクラスのAPIをご覧ください。add(BigDecimal)基本演算子ごとに1つずつ、のような名前のメソッドがあります。これらの方法を使用してください。

例えば:

if(b1.divide(b2).equals(BigDecimal.ZERO))
于 2012-06-11T11:12:59.220 に答える
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);
于 2012-06-11T11:21:51.767 に答える
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++;
                }
            }
        }
于 2012-06-11T11:31:24.010 に答える