2013-10-24 141 views
0

我有以下代碼和我的輸出正在工作,但我不知道如何使用printf來使此輸出(66.67%),而不是66.66666666666667%,只是爲了舉例。任何幫助表示讚賞!Printf格式化小數位

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 + "%")); 



} 

謝謝

+3

使用[的printf(http://www.cs.gsu.edu/csc2010/f13/assignments/h4/printf.pdf) –

回答

6

可以使用printf的修改%.2f得到的只有兩位小數。

3

使用String.format%.2f

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

謝謝!!我明白了,現在顯然我需要說8個平均值(66.67%),在括號中插入哪裏會更好? System.out.printf(「%d evens%.2f %%」,numEvens,100.0 * numEvens/numNums); – user2268587

+0

你會寫''%d evens(%.2f %%)「'。也許[本文](http://javarevisited.blogspot.de/2012/08/how-to-format-string-in-java-printf.html)可以幫助您理解Java中的字符串格式。 –

0

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

 System.out.println(numEvens + " evens " + Math.round((100.0* numEvens/numNums)*100)/100.0d + "%")); 
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);