0

这可能是重复的,但我找不到任何适用于我的代码的答案。

我正在尝试截断 Java 中方法(用于计算费用)的结果。然后我尝试将结果写入文本文件,但它并没有像应有的那样显示。这是我得到的,也是我希望它返回的:

  1. 费用的结果是 8.4,它应该返回 8.40
  2. 费用的结果是 8.0,它应该返回 8.00

等等......请有什么建议吗?

这是我的方法的全部代码:

public Double calculateFee(Parcel pcl) {    
    // Get type of parcel (E, S or X)
    String typeOfParcel = pcl.getParcelID().substring(0,1);
    // Formula for calculating fee
    Double fee = (double) 1 + Math.floor(pcl.getVolume()/28000) + (pcl.getDays()-1);

    // apply a discount to parcels of type "S"
    if (typeOfParcel.equalsIgnoreCase("S")) {
        fee = fee * 0.9;
    }

    // apply a discount to parcels of type "X"
    else if (typeOfParcel.equalsIgnoreCase("X")) {
        fee = fee * 0.8; 
    } 

    // This is what I tried:
    // Tried also using #.##, but no result
    DecimalFormat decim = new DecimalFormat("0.00");
    fee = Double.parseDouble(decim.format(fee));

    return fee;     
} 
4

2 回答 2

2

一种方法是使用 String.format()。

  Double fee = 8.0;
  String formattedDouble = String.format("%.2f", fee );

请注意, Double 不保存其值的格式化表示。

有关格式字符串的其他详细信息可在此处获得。

于 2013-02-14T22:02:41.723 回答
1

这里的问题不在于您的格式错误。您正在使用以下格式格式化您的双精度:

decim.format(fee);

然后,您将此字符串解析为 Double,因此会丢失格式:

Double.parseDouble(...

只返回一个字符串而不是一个 Double,并且不要使用 Double.parseDouble。

于 2013-02-14T22:09:55.647 回答