2014-10-09 2 views
0

Образец кода нижеПоказать два десятичных знака в java с помощью printf?

double maxHeight; 
maxHeight = (Math.pow(speed * Math.sin(angle), 2)/2 * gravity); 
System.out.printf("Maximum height: %.2f", (maxHeight)); 

Погрешность я получить:

«Метод Е (String, Object []) в типа PrintStream не применяется для аргументов (String, double) "

Какое простейшее решение для печати только двух знаков после запятой с использованием метода printf или есть ли какие-либо другие решения без создания десятичной формы?

+1

У меня нет ошибок. Используете ли вы более старую версию Java? – ajb

+0

Вы компилируете для более старой версии, например 'javac -target 1.4'? Использование JDK, у которого уже есть printf, но цель не имеет varargs. Проверьте исходную версию. –

ответ

2

Проблема в том, что varargs ищет один или несколько Object s, и вы предоставили примитивную переменную. Самый простой способ - это просто его обернуть:

System.out.printf("Maximum height: %.2f", Double.valueOf(maxHeight)); 
+1

Когда я пытаюсь, он автоматически расшифровывает 'double' просто (используя 1.8). Является ли ваше обходное решение необходимым только для 1.4 и более ранних? Или есть какие-нибудь более поздние версии, которые в этом нуждаются? – ajb

+1

@ajb Не уверен. 'printf' не был добавлен до 1.5, поэтому, если это проблема с автобоксингом, это имеет значение после этой точки. – chrylis

Смежные вопросы