0

我有以下代码并且我的输出正在工作,但我不知道如何使用 printf 来生成此输出 (66.67%) 而不是 66.66666666666667%,仅作为示例。任何帮助表示赞赏!

public static void evenNumbers(Scanner input) 
{
     int numNums = 0;
     int numEvens = 0;
     int sum = 0;

 while (input.hasNextInt()) 
  {
     int number = input.nextInt();
      numNums++;
     sum += number;
   if (number % 2 == 0) 
   {
        numEvens++;
   }
  }
     System.out.println(numNums + " numbers, sum = " + sum);
     System.out.println(numEvens + " evens " + (100.0* numEvens / numNums + "%"));



}

谢谢

4

4 回答 4

6

您可以使用 printf 修饰符%.2f仅获得两位小数。

于 2013-10-24T21:18:35.633 回答
3

使用String.format%.2f

String.format("%d evens %.2f%%", numEvens, 100.0 * numEvens / numNums);
于 2013-10-24T21:20:36.330 回答
0

不要printf在这里使用。相反,使用MessageFormator DecimalFormat.getPercentInstance()

String format = "{numbers: {0, number, integer}," +
                " sum: {1, number,  integer}\n" +
                "evens: {2, number, integer}," +
                " {3, number, percent}"
String message = MessageFormat.format(format,
    new Object[]{numNums, sum, numEvens, ((double) numEvens)/ numNums)});
System.out.println(message); 
于 2013-10-24T21:41:22.317 回答
0

您可以在打印之前在答案上使用 Math.round:

     System.out.println(numEvens + " evens " + Math.round((100.0* numEvens / numNums)*100)/100.0d + "%"));
于 2013-10-24T21:21:15.610 回答