我有下面的方法,但由于某种原因,它没有格式化区域只有一个小数。感谢所有帮助。
public double beraknaArea()
{
DecimalFormat formatter = new DecimalFormat("#0.0");
double area = 0;
area = radie*radie*3.14;
formatter.format(area);
return area;
}
答案 0 :(得分:6)
您将返回相同的double,而不是格式化程序的输出。
format() method不会改变传入的double,它会返回double的String格式。
答案 1 :(得分:2)
Java中没有任何方法可以更改声明的变量的类型,或者改变任何原始值(或者确实String
)。您需要返回formatter.format(area)
返回的内容,而不是area
的未更改值。
public String beraknaArea()
{
DecimalFormat formatter = new DecimalFormat("#0.0");
double area = radie*radie*3.14;
return formatter.format(area);
}
答案 2 :(得分:1)
Formatters format方法返回String
String temp = formatter.format(area);
System.out.println(temp);
现在您将看到格式化的代码。
答案 3 :(得分:1)
你的语句formatter.format(area);
没有修改变量area
,变量仍然保持与之前相同的值,如果你想要输出结果,你可以返回一个字符串
答案 4 :(得分:0)
问题是,您没有返回格式化区域,而是返回您计算的区域,但未格式化。
请参阅以下内容:
public String beraknaArea()
{
DecimalFormat formatter = new DecimalFormat("#0.0");
double area = 0;
area = radie*radie*3.14;
String formattedArea = formatter.format(area);
return formattedArea;
}
/************ OR **************/
public double beraknaArea()
{
DecimalFormat formatter = new DecimalFormat("#0.0");
double area = 0;
area = radie*radie*3.14;
String formattedArea = formatter.format(area);
return Double.parseDouble(formattedArea);
}
第一个解决方案将formattedArea作为String返回,而第二个解决方案返回formattedArea的double值。
答案 5 :(得分:-1)
您可以将数字乘以10,将其转换为整数,然后除以10.0得到一个只有一位小数的双精度数。
area = ((int) (area * 10)) / 10.0;
您可以使用Math.floor
area = Math.floor(area * 10) / 10.0;
现在,进一步的算术可以使数字具有不同的小数位数。
修改强>
这假设OP希望将返回值保持为double而不是String(正如其他答案所提供的那样)。