小数点以下 2 桁のみの double 値を取得する方法。
例えば
もしも
i=348842.
double i2=i/60000;
tv.setText(String.valueOf(i2));
このコード生成5.81403333
。
しかし、私は欲しいだけ5.81
です。
それで、私は何をすべきですか?
小数点以下 2 桁のみの double 値を取得する方法。
例えば
もしも
i=348842.
double i2=i/60000;
tv.setText(String.valueOf(i2));
このコード生成5.81403333
。
しかし、私は欲しいだけ5.81
です。
それで、私は何をすべきですか?
DecimalFormatを使用します。
DecimalFormat は、10 進数をフォーマットする NumberFormat の具体的なサブクラスです。西洋、アラビア、インドの数字のサポートなど、あらゆるロケールで数値を解析およびフォーマットできるように設計されたさまざまな機能があります。また、整数 (123)、固定小数点数 (123.4)、科学表記法 (1.23E4)、パーセンテージ (12%)、通貨 ($123) など、さまざまな種類の数値もサポートしています。これらはすべてローカライズできます。
コード スニペット-
double i2=i/60000;
tv.setText(new DecimalFormat("##.##").format(i2));
出力-
5.81
どうString.format("%.2f", i2)
ですか?
ここでは、10 進数を短くする方法を示します。ここでは、小数点以下 4 桁まで短くします。
double value = 12.3457652133
value =Double.parseDouble(new DecimalFormat("##.####").format(value));
他の多くの回答は、フォーマットのみを行います。このアプローチは、印刷形式だけでなく値を返します。
double number1 = 10.123456;
double number2 = (int)(Math.round(number1 * 100))/100.0;
System.out.println(number2);
最善かつ最も簡単な解決策は (KISS) だと思います:
double i = 348842;
double i2 = i/60000;
float k = (float) Math.round(i2 * 100) / 100;
数値を char シーケンスにフォーマットしているときに開発者の頭に最初に浮かぶべきことは、操作を元に戻すことができるようにするなどの詳細に注意する必要があります。
そして他の側面は、適切な結果を提供することです。したがって、数値を切り捨てるか、丸めます。
ですから、始める前に、価値に興味があるかどうかを自問する必要があります。
目標を達成するには複数のオプションがありますが、そのほとんどはFormatとFormatterを参照していますが、この回答を見ることをお勧めします。
i=348842.
double i2=i/60000;
DecimalFormat dtime = new DecimalFormat("#.##");
i2= Double.valueOf(dtime.format(time));
v.setText(String.valueOf(i2));