在我的getter方法中无法格式化double

时间:2018-07-27 03:10:20

标签: java number-formatting decimalformat

我的代码:

private double retailPrice = 699;
DecimalFormat df = new DecimalFormat("#,###.00");

public double getRetailPrice()
{
  return df.format(retailPrice);
}

我正在尝试为HW作业设置格式。并不是必需的,但是我想尝试一下作为学习经验。该方法应该返回一个double,但是当我尝试使用十进制格式化程序时,会出现错误:

  

字符串不能转换为双精度

但这不是字符串...对吗?

这基本上是作为写入到csv文件的StringBuilder对象的一部分而结束的,因此需要先对其进行格式化,然后再将其附加到StringBuilder。

3 个答案:

答案 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));
}