web-dev-qa-db-ja.com

小数点以下2桁のみを表示

小数点以下2桁のdouble値を取得する方法。

例えば

もし

i=348842.
double i2=i/60000;
tv.setText(String.valueOf(i2));

このコードは5.81403333を生成します。

しかし、私は5.81だけが欲しいです。

だから私は何をすべきか?

78
URAndroid

DecimalFormat を使用します。

DecimalFormatは、10進数をフォーマットするNumberFormatの具象サブクラスです。西洋、アラビア、インドの数字のサポートを含め、あらゆるロケールで数字を解析およびフォーマットできるように設計されたさまざまな機能を備えています。また、整数(123)、固定小数点数(123.4)、科学表記法(1.23E4)、パーセンテージ(12%)、通貨額($ 123)など、さまざまな種類の数値もサポートしています。これらはすべてローカライズできます。

コードスニペット-

double i2=i/60000;
tv.setText(new DecimalFormat("##.##").format(i2));

出力-

5.81

166

String.format("%.2f", i2)はどうですか?

114
dumazy

ここで、小数点以下を短くしない方法を示します。ここでは、小数点以下4桁まで短くします。

   double value = 12.3457652133
  value =Double.parseDouble(new DecimalFormat("##.####").format(value));
26
Pir Fahim Shah

私は最高で最も簡単な解決策は(KISS)だと思う:

double i = 348842;
double i2 = i/60000;
float k = (float) Math.round(i2 * 100) / 100;
10
Sergii Stotskyi

これは、フォーマットだけではなく値を返します。

double number1 = 10.123456;
double number2 = (int)(Math.round(number1 * 100))/100.0;
System.out.println(number2);
10
i=348842.
double i2=i/60000;
DecimalFormat dtime = new DecimalFormat("#.##"); 
i2= Double.valueOf(dtime.format(time));
v.setText(String.valueOf(i2));
5
MAC

数値をcharシーケンスにフォーマットしている間に開発者の頭に飛び込むべき最初のものは、操作を逆にすることができるようにそのような詳細に注意する必要があります。

そして、他の側面は適切な結果を提供しています。したがって、数値を切り捨てるか、丸める必要があります。

あなたが始める前に、あなたはあなた自身に尋ねるべきです、私は価値に興味があるかどうか。

目標を達成するには複数のオプションがありますが、それらのほとんどは Format および Formatter を参照していますが、 this answer を参照することをお勧めします。