-3

下面我的部分代码显示了我希望它返回带两位小数的双精度的方法之一,但它说价格是一个字符串,为什么会这样?

public Double calculate(double k, double m, int l, int n, double hr){
double price = 10.00;

 NumberFormat nf = NumberFormat.getNumberInstance();
    nf.setMaximumFractionDigits(2);

//这里的方法

 return nf.format(price);
4

3 回答 3

2

当您计算 adouble时,计算机将其存储在内存中的方式不会以任何方式说明您希望如何显示它。这是一个没有任何属性的值。

通过使用NumberFormat,您正在创建代码,该代码获取存储在内存中的值并以所需的方式对其进行操作。调用nf.format()返回 aString您可以从文档中看到。

如果你想从函数返回一个格式化的数字,你必须将返回类型设置为 a String。如果您仍然需要保留的值,price您可以返回 price 并稍后在需要显示时在代码中完成格式化。

于 2013-03-15T18:14:32.890 回答
1

http://docs.oracle.com/javase/6/docs/api/java/text/NumberFormat.html

这就是方法应该做的!

原型说它返回一个字符串。

String format(double number); //Specialization of format.
于 2013-03-15T18:13:02.457 回答
-1

它说价格是一个字符串,因为该format方法返回一个字符串。

也许尝试这样的事情,

return Double.parseDouble(nf.format(price));

于 2013-03-15T18:13:05.890 回答