私は、送料などの基本コストを実装するプロジェクトに取り組んでおり、toString をフォーマットして、小数点以下 2 桁でコストを表示できるようにする必要があります。私はすでに丸めについていくつかの調査を行い、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 に適用する方法がわかりません。すべての小数が 2 つの値に表示されるように、これをフォーマットするにはどうすればよいですか? クラスにまだ導入されていないので、BigDecimal を使用する必要があるかどうかも疑問に思っています。double 値の表示も書式設定する丸めメソッドを実装するのが簡単な他の方法はありますか? または、 toString メソッド内で小数点をフォーマットする必要がありますか?