Я работаю над проектом, который реализует базовую стоимость доставки и многое другое, и мне нужно иметь возможность форматировать toString так, чтобы она отображала стоимость с двумя десятичными знаками. Я уже провел некоторое исследование округления и реализовал метод округления BigDecimal:
Код: Выделить всё
public static double round(double unrounded, int precision, int roundingMode) {
BigDecimal bd = new BigDecimal(unrounded);
BigDecimal rounded = bd.setScale(precision, roundingMode);
return rounded.doubleValue();
}
private double baseCost() {
double cost = (weightInOunces * costPerOunceInDollars);
cost = round(cost, 2, BigDecimal.ROUND_HALF_UP);
return cost;
}
@Override
public String toString() {
return "From: " + sender + "\n" + "To: " + recipient + "\n"
+ carrier + ": " + weightInOunces + "oz" + ", "
+ baseCost();
}
Однако когда он печатает значение 11,50 доллара, оно получается в размере 11,5 доллара. Я знаю, как отформатировать десятичное число в стиле System.out.format(), но не уверен, как это можно применить к toString. Как я могу отформатировать это так, чтобы все десятичные дроби отображались в двух значениях? Мне также интересно, стоит ли мне вообще использовать BigDecimal, поскольку он еще не был представлен в классе. Существуют ли другие простые в реализации методы округления, которые также будут форматировать отображение двойного значения? Или мне следует просто отформатировать десятичное число в методе toString?
Подробнее здесь:
https://stackoverflow.com/questions/146 ... ing-method