截断double或向decimal-Java添加额外的0
这可能是重复的,但我找不到任何与我的代码相关的答案 我正试图在Java中截断一个方法(用于计算费用)的结果。然后,我尝试将结果写入一个文本文件,但它没有显示出应有的效果。这是我得到的,也是我想要它回报的:截断double或向decimal-Java添加额外的0,java,formatting,double,truncate,Java,Formatting,Double,Truncate,这可能是重复的,但我找不到任何与我的代码相关的答案 我正试图在Java中截断一个方法(用于计算费用)的结果。然后,我尝试将结果写入一个文本文件,但它没有显示出应有的效果。这是我得到的,也是我想要它回报的: 费用结果为8.4,应返回8.40 费用结果为8.0,应返回8.00 等等。。。有什么建议吗 这是我的整个方法代码: public Double calculateFee(Parcel pcl) { // Get type of parcel (E, S or X) St
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;
}
一种方法是使用String.format() 请注意,Double不包含其值的格式化表示形式
有关格式字符串的其他详细信息可用 一种方法是使用String.format() 请注意,Double不包含其值的格式化表示形式
有关格式字符串的其他详细信息可用 这里的问题不在于格式错误。您正在使用以下命令格式化您的double文件:
decim.format(fee);
然后,您将该字符串解析回一个Double,从而丢失格式:
Double.parseDouble(...
只要返回一个字符串而不是一个Double,并且不要使用Double.parseDouble。这里的问题不是格式化错误。您正在使用以下命令格式化您的double文件:
decim.format(fee);
然后,您将该字符串解析回一个Double,从而丢失格式:
Double.parseDouble(...
只返回字符串而不是Double,不要使用Double.parseDouble。为什么要再次解析格式化的Double以返回Double?只需返回由
DecimalFormat.parse
@RohitJain返回的字符串形式是正确的:这是无意义的代码为什么作为格式化代码的结果返回double
,而不是string
?我不知道格式化不能应用于double类型。对不起,伙计们,初学者的错误。为什么你们要再次解析格式化的double来返回double?只需返回由DecimalFormat.parse
@RohitJain返回的字符串形式是正确的:这是无意义的代码为什么作为格式化代码的结果返回double
,而不是string
?我不知道格式化不能应用于double类型。对不起,伙计们,初学者的错误。嗯。。现在我明白我做错了什么。这是有道理的!谢谢@aglassman的解释。你应该说用什么代替。parseDouble@Wrong我回答的最后一行解释了该怎么做。嗯。。现在我明白我做错了什么。这是有道理的!谢谢@aglassman的解释。你应该说用什么代替。parseDouble@Wrong我回答的最后一行解释了该怎么做。