Что я должен изменить в этой функции, чтобы получить эффект, подобный 0,00? - PullRequest
1 голос
/ 10 октября 2011

Для того, чтобы получить значение точки дроби до двух десятичных точек, я использую эту функцию.

double roundTwoDecimals(double d) {             
    DecimalFormat twoDForm = new DecimalFormat("##.##");         
    return Double.valueOf(twoDForm.format(d)); 

Но, хотя есть значение типа «5.50», с этой функцией я получил только «5.5».Вместо этого я хочу получить 5.50 с вышеуказанной функцией, тогда что я должен изменить ??

Пожалуйста, дайте мне обновленную функцию или любое предложение изменить вывод, например, «0.00».Спасибо.

Ответы [ 3 ]

2 голосов
/ 10 октября 2011

Ваш пример отлично работает для округления чисел до 2 цифр. Но вы потеряете конечные нули, потому что числовые переменные (double, float, ...) не хранят никакой форматирующей информации.

Если вы хотите увидеть конечные нули (например, 5.50), вы должны отформатировать числа на выходе:

DecimalFormat twoDForm = new DecimalFormat("#0.00");         
System.out.println(twoDForm.format(d));
2 голосов
/ 10 октября 2011

Используйте формат :

new DecimalFormat("#0.00")

При использовании # нулевые значения отображаются как отсутствующие.Использование 0 обеспечит отображение либо цифры, либо 0.

0 голосов
/ 10 октября 2011

DecimalFormat.format возвращает String (не StringBuffer), который вы затем получаете Double.valueOf (...). Затем вы возвращаете двойное значение, которое, как я полагаю, при печати использует собственный toString () для отображения. Вам нужно запустить DecimalFormat.format для возвращенного двойного значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...