2

以下の方法がありますが、何らかの理由で、小数点以下1桁だけになるように領域をフォーマットしていません。すべての助けに感謝します。

public double beraknaArea()
    {
       DecimalFormat formatter = new DecimalFormat("#0.0");
       double area = 0;
       area = radie*radie*3.14;
       formatter.format(area);
       return area;
     }
4

6 に答える 6

6

フォーマッタの出力ではなく、同じ double を返しています。

format() メソッドは、渡された double を変更せず、double の文字列形式を返します。

于 2012-08-01T18:52:59.853 に答える
2

Java のメソッドは、宣言された変数の型を変更したり、プリミティブ値 (または実際にはString) を変更したりすることはできません。formatter.format(area)の変更されていない値ではなく、返されるものを返す必要がありますarea

public String beraknaArea()
{
   DecimalFormat formatter = new DecimalFormat("#0.0");
   double area = radie*radie*3.14;
   return formatter.format(area);
 }
于 2012-08-01T18:54:24.363 に答える
1

フォーマッタフォーマットメソッドは文字列を返します

String temp = formatter.format(area);

System.out.println(temp);

これで、フォーマットされたコードが表示されます。

于 2012-08-01T18:52:41.870 に答える
1

ステートメントformatter.format(area);は変数を変更していませんarea。変数は以前と同じ値を保持しています。変換された出力が必要な場合は、文字列を返すことができます

于 2012-08-01T18:53:24.553 に答える
0

問題は、フォーマットされた領域を返す代わりに、計算したけれどもフォーマットされていない領域を返していることです。

以下を参照してください。

public String beraknaArea()
    {
       DecimalFormat formatter = new DecimalFormat("#0.0");
       double area = 0;
       area = radie*radie*3.14;
       String formattedArea = formatter.format(area);
       return formattedArea;
     }



/************ OR **************/



public double beraknaArea()
    {
       DecimalFormat formatter = new DecimalFormat("#0.0");
       double area = 0;
       area = radie*radie*3.14;
       String formattedArea = formatter.format(area);
       return Double.parseDouble(formattedArea);
     }

最初のソリューションは、formattedArea を文字列として返しますが、2 番目のソリューションは、formattedArea の double 値を返します。

于 2012-08-01T21:00:14.237 に答える
-1

数値に 10 を掛けて整数としてキャストし、それを 10.0 で割ると、小数点が 1 つだけの double を得ることができます。

area = ((int) (area * 10)) / 10.0;

intにキャストする代わりに、使用できますMath.floor

area = Math.floor(area * 10) / 10.0;

ここで、さらに算術演算を行うと、数値の小数点以下の桁数が異なる場合があります。

編集:

これは、OPが戻り値をStringではなくdoubleとして保持したいことを前提としています(他の回答が提供しているように)。

于 2012-08-01T19:07:02.707 に答える