下面我的部分代码显示了我的一个方法,我希望它返回一个带有两位小数的双精度但是它说价格是一个字符串为什么会这样?
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);
答案 0 :(得分:2)
当您计算double
时,计算机将其存储在内存中的方式不会以任何方式说明您希望如何显示它。这是一个没有任何财产的价值。
通过使用NumberFormat
,您创建的代码可以获取存储在内存中的值,并以所需的方式对其进行操作。致电nf.format()
会返回String
,您可以看到from the documentation。
如果要从函数返回格式化数字,则必须将返回类型设置为String
。如果您仍然需要保留price
的值,则可以在需要显示时在代码中返回价格并完成格式化。
答案 1 :(得分:1)
http://docs.oracle.com/javase/6/docs/api/java/text/NumberFormat.html
这就是该方法应该做的事情!
原型说它返回一个字符串。
String format(double number); //Specialization of format.
答案 2 :(得分:-1)
它说price是一个String,因为format
方法返回一个字符串。
尝试这样的事情,
return Double.parseDouble(nf.format(price));