web-dev-qa-db-ja.com

パーセント変数を小数点以下2桁にフォーマットするにはどうすればよいですか?

このプログラムは基本的にテキストファイルを処理し、データを読み取り、機能を実行します。

while(s.hasNext()){
    name= s.next();

    mark= s.nextDouble();

    double percent= (mark / tm )*100  ;

    System.out.println("Student Name      : " +name );

    System.out.println("Percentage In Exam: " +percent+"%"); 

    System.out.println(" ");
}

パーセント値を小数点以下2桁にフォーマットしたいのですが、whileループ内にあるため、printfを使用できません。

13
Vishal Jhoon

エリオットの答えはもちろん正しいですが、完全を期すために、値をすぐに出力したくないが、代わりに文字列を他の使用法のために保持したい場合は、 DecimalFormat クラス:

DecimalFormat df = new DecimalFormat("##.##%");
double percent = (mark / tm);
String formattedPercent = df.format(percent);
13
Mureinik

次のようなフォーマットされた出力を使用できます。

System.out.printf("Percentage In Exam: %.2f%%%n", percent);

フォーマッタ構文precisionを次のように記述します

精度

一般的な引数タイプの場合、精度は出力に書き込まれる最大文字数です。

浮動小数点変換 'e'、 'E'、および 'f'の場合、精度は、小数点記号の後の桁数です。変換が「g」または「G」の場合、精度は丸め後の結果の大きさの合計桁数です。変換が「a」または「A」の場合、精度を指定してはなりません。

二重パーセント%%はパーセントリテラルになり、%nは改行です。

10
Elliott Frisch
NumberFormat percentageFormat = NumberFormat.getPercentInstance();
percentageFormat.setMinimumFractionDigits(2);
3
Joe Almore

あなたはString.formatを使用してそれを行うことができます

System.out.println(String.format("%s%.2f%s","Percentage In Exam: " ,percent,"%"));
3
Diunicorn

est最も簡単な方法:

   System.out.println(Math.floor(percent*100)/100);
0
Xline

NumberFormat.getInstance(Locale locale)を介してパーセントフォーマッタを取得し、setMinimumFractionDigitsメソッド(およびその他のメソッド)を使用するのが最善の方法です。

0

数値がすでに小数点第2位にある場合、最も簡単な方法は、次のように数値を文字列に連結することです。

System.out.println("" +percent+ "%");
0
Valerie Ogonor