BigDecimal小数計算について
プログラミングに関する知識が皆無の初心者です。
「はじめてのandroidアプリプログラミング」という本に従って電卓のアプリを作っているのですが、小数点を含む計算ができず、困っております。
演算記号前の数字が小数で、演算記号後の数字が整数であるならば 1.5*2=3 と正しく計算ができますが、
演算記号後が小数点を含む数だと、計算されず演算記号後に入力した数字が 2*1.5=1.5 と、そのまま表示されてしまいます。
小数の表示は
if (mOp == R.id.button_decimal || mCalcValue.scale() != 0) {
// 小数点を含む場合
BigDecimal bd = new BigDecimal(BigInteger.valueOf(value),mCalcValue.scale() + 1);
mCalcValue = mCalcValue.add(bd);
} else {
// それ以外の場合
// 10倍
mCalcValue = mCalcValue.multiply(BigDecimal.TEN);
// 足す
mCalcValue = mCalcValue.add(new BigDecimal(value));
}
で、
イコールを押したときの動作は
public void onEqualClick(View view) {
switch (mOp) {
case R.id.button_plus:
// 足し算
mCalcValue = mPreValue.add(mCalcValue);
break;
case R.id.button_subtract:
// 引き算
mCalcValue = mPreValue.subtract(mCalcValue);
break;
case R.id.button_multiply:
// かけ算
mCalcValue = mPreValue.multiply(mCalcValue);
break;
case R.id.button_divide:
// 現在の値が0ではないかチェック
if (!BigDecimal.ZERO.equals(mCalcValue)) {
// 割り算
mCalcValue = mPreValue.divide(mCalcValue, 11,
BigDecimal.ROUND_HALF_UP);
}
break;
}
です。
どこのコードが原因かもわからず、どこを質問文に掲示すればアドバイスいただきやすいかもわからなかったため、質問文に不足あるかもしれません。
すみませんがよろしくお願いします。
お礼
回答ありがとうございます。 回答いただいたあとにそろばん学校のサイトを見つけまして、今はそれで学習しているところです。