ご質問のプログラム自体は以下のようにすれば期待どおりの結果になると思います。
tv_point1.setText(String.valueOf((int)a2));
ただこうした計算にdoubleを使うことはあまりよくないと思うのでコメントします。
小数点以下の桁があるような数値を正確に扱いたい場合次のような戦略もあると思います。
takitoさんがおっしゃっている文字として扱うときの一例です。数値型として値を10倍・10分の1にすると考えるのではなく文字列として表現されたもののまま小数点の文字を左右に移動すると考えます。
java
1// Stringとして表現した10進数sの小数点位置をn桁右へ移動する(n<0のときは左に移動)
2static String slideFloatingPoint(String s, int n) {
3 int fp = s.indexOf('.');
4 String t = s.replace(".", ""); // 小数点を取り去る
5 if (fp == -1)
6 fp = t.length();
7 fp += n;
8 while (fp <= 0) {
9 fp++;
10 t = "0" + t;
11 }
12 if (fp < t.length())
13 return t.substring(0, fp) + "." + t.substring(fp);
14 while (fp > t.length()) {
15 t = t + "0";
16 }
17 return t;
18}
19...
20String s1 = slideFloatingPoint("101", -1); // 10で割る(小数点を1桁左へ)
21// => s1 は "10.1"になる
22String s2 = slideFloatingPoint("10.1", 1); // 10かける(小数点を1桁右へ)
23// => s2 は "101"になる
文字列としてではなく数値としても扱う必要があるなら何らかの数値型を使うことになりますが、10進数として循環小数でない小数を正確に扱う必要があるならdoubleは不適切でBigDecimalを使うのがよいと思います。
java
1// "101"(を数値として解釈したもの)を10で割る
2BigDecimal d1 = new BigDecimal("101").divide(BigDecimal.TEN);
3String s1 = d1.toString();
4//=> d1は10.1に、s1 は "10.1"になる
5
6// "10.1"(を数値として解釈したもの)に10かける
7BigDecimal d2 = new BigDecimal("10.1").multiply(BigDecimal.TEN);
8String s2 = d2.toString();
9//=> d2は101.0に、s2 は "101.0"になっちゃいます
10
11// d2の小数点以下の桁が不要だと分かっているとき
12int i3 = d2.intValue();
13long l3 = d2.longValue();
14String s3 = String.valueOf(l3);
15//=> i3とl3は101に、s3は"101"になる
余談:
doubleは科学技術計算など一定の誤差があることを許容するような計算に向いていますが、10進数での小数を正確に表現する必要がある場合は向きません。なぜなら計算機の中では我々が普段使う10進数ではなく2進数で数値を表現しており、10進数と2進数では同じ値でも循環小数になるかどうかが違うからです。例えば0.1は10進数では循環小数ではありませんが、2進数では循環小数(0.0001100110011001...)になります。
本件では整数を10で割ったりかけたりしており小数点数以下の値となったときに実は誤差が生じています。この程度だとdoubleを用いても10かけた結果は元の値と(多分)一致します。しかし元の値がlongの範囲だったり、100で割ったりかけたりすると期待外の結果になる場合が生じます。例えば以下のようなプログラムを動かすと"mismatch!"と印字されます。
java
1int i = 7; // 他に14,28,29,55,56,57,58,...なども結果が不一致になる
2double d = i / 100 * 100;
3if (i != d) {
4 System.out.println("mismatch!");
5}
doubleを使っても数値によっては期待通りに動いたりするのでバグに気が付きにくいのですが、いつか同じ考え方で100で割ったりかけたりするプログラムを書いたときに落とし穴にはまってしまうかも知れません。doubleを使っても問題ないかBigDecimalのようなものを使うべきかは意識しておいた方がよいと思います。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/01/25 22:24
2017/01/25 23:20
2017/01/25 23:38
2017/01/26 00:37
2017/01/26 07:38