我的代码:
private double retailPrice = 699;
DecimalFormat df = new DecimalFormat("#,###.00");
public double getRetailPrice()
{
return df.format(retailPrice);
}
我正在尝试为HW作业设置格式。并不是必需的,但是我想尝试一下作为学习经验。该方法应该返回一个double,但是当我尝试使用十进制格式化程序时,会出现错误:
字符串不能转换为双精度
但这不是字符串...对吗?
这基本上是作为写入到csv文件的StringBuilder对象的一部分而结束的,因此需要先对其进行格式化,然后再将其附加到StringBuilder。
答案 0 :(得分:1)
这样做
public String getRetailPrice()
{
return df.format(retailPrice);
}
答案 1 :(得分:1)
您正在混淆两件事。
一个双数字就是:一个数字。它不知道格式化。格式化是将数字转换为字符串时的格式。
这是两件不同的事情,想要格式化一个double值同时将其保留为double毫无意义。您的代码毫无意义,简单明了。
解决方案:让getter返回原样的double值。或将其返回类型更改为字符串。例如,也许将其重命名为“ getPriceAsFormattedString”。
答案 2 :(得分:0)
format方法的返回类型为String,因此您必须再次将格式化后的值解析为double。像下面的
public double getRetailPrice() {
return Double.valueOf(df.format(retailPrice));
}