電卓をつくっています。
少数の計算が微妙にズレて正しく結果が表示されません。
例えば、
5.3 + 2.3 = 5.9999999...
7.3 + 2.5 = 9.80000000...
このように、微妙にズレて結果がだされてしまい困っています。
希に、
6.3 + 2.3 = 8.5
など、ちゃんと結果を出してくれることもあります・・・。
プラスするところのコードはこんな感じです
Java
1 if (kigou1.equals("+")) {//プラスが押された場合ここに入る 2 suuji1 = mae + Double.valueOf(textView.getText().toString()); //前回入力した数値に、今テキストビューにある数字を足す。結果をsuuji1に入れる。 3 bbb = new BigDecimal(suuji1); //suuji1をBigDecimalに変換 4 textView.setText(String.valueOf(bbb)); //結果をテキストビューに表示 5 mae = suuji1; //結果を「前回入力した数値」にいれる
よろしくお願いします。
-----------------------追記-------------------------------
(返信コメントのコピペですが失礼します)
ご回答、ありがとうございます。
BigDecimalは使い方がDoubleにくらべ難しいのでDoubleからBigDecimalに変換する。
という形で使ったのですが、すべてBigDecimalにしないとよろしくないみたいですね。
BigDecimalを使って新しく書き直してみたのですが、
比較の仕方がイマイチわからないのでつまっています。よろしければそちらも教えていただけないでしょうか。
Java
1 2BigDecimal mae = BigDecimal.ZERO 3if (mae == 0){ //ビッグデシマルのmaeが0の時、ここに入る 4} 5
上記のようなことをやりたいのですが、うまくいきません。
他にも
if(mae.equals(0))
もやってみましたがうまくいきません。
BigDecimalの比較方法に、compareToというのもあるようですが
型同士で比較するモノみたいですので、ここで使うのは違う気がする・・・

回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/11/18 12:46 編集
2015/11/18 13:04
2015/11/18 13:08
2015/11/19 02:49
2015/11/19 04:58