我有以下代码,我的输出正在运行,但我不知道如何使用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 + "%"));
}
谢谢
答案 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
。相反,请使用MessageFormat
或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);