小数位的printf格式

时间:2013-10-24 21:16:31

标签: java

我有以下代码,我的输出正在运行,但我不知道如何使用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 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:3)

使用String.format%.2f

String.format("%d evens %.2f%%", numEvens, 100.0 * numEvens / numNums);

答案 2 :(得分:0)

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

     System.out.println(numEvens + " evens " + Math.round((100.0* numEvens / numNums)*100)/100.0d + "%"));

答案 3 :(得分:0)

请勿在此处使用printf。相反,请使用MessageFormatDecimalFormat.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);