考慮以下條件:的Java如何在操作的BigDecimal值
- 度的兩個BigDecimal值:B1和B2;
- x - Integer;
- b1> b2;
我需要找到
的最小值X這樣
B2 * X> B1
例如,如果所有的值 - 整數,比:
if (b1%b2 == 0) {
x = b1/b2;
} else {
x = b1/b2 +1;
}
考慮以下條件:的Java如何在操作的BigDecimal值
我需要找到
的最小值X這樣
B2 * X> B1
例如,如果所有的值 - 整數,比:
if (b1%b2 == 0) {
x = b1/b2;
} else {
x = b1/b2 +1;
}
你可以使用
BigInteger x = b1.divide(b2, 0, RoundingMode.CEILING).toBigInteger()
看一看API for the BigDecimal class。您會找到名稱爲add(BigDecimal)
的方法,每個基本操作符都有一個。使用這些方法。
例如爲:
if(b1.divide(b2).equals(BigDecimal.ZERO))
嘗試:
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);
像這樣的事情?
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++;
}
}
}
是否有原因'x'不能是'BigInteger'或'long'?如果'x
究竟是什麼問題? – Jivings
'BigDecimal'支持所有基本的算術運算;見例如http://docs.oracle.com/javase/1.5.0/docs/api/java/math/BigDecimal.html。我不確定問題是什麼? –
你確定你需要BigDecimal嗎? –