Java 在double而不是字符串中使用CurrencyInstance
我想这是一个很简单的问题,只是似乎无法找到正确的方法 我有一种方法可以将我的总“成本”(一个预定义的“双精度”变量)生成为美元金额:Java 在double而不是字符串中使用CurrencyInstance,java,currency-formatting,public-method,Java,Currency Formatting,Public Method,我想这是一个很简单的问题,只是似乎无法找到正确的方法 我有一种方法可以将我的总“成本”(一个预定义的“双精度”变量)生成为美元金额: import java.text.NumberFormat; public class Example { private double cost = 3.5; NumberFormat cash = NumberFormat.getCurrencyInstance(); public String getTotal(){ String mone
import java.text.NumberFormat;
public class Example {
private double cost = 3.5;
NumberFormat cash = NumberFormat.getCurrencyInstance();
public String getTotal(){
String money = cash.format(cost);
return money;
}
}
这可以正常工作并正确打印“$3.50”
我想知道是否有可能采取以下措施:
public double getTotal(){
return cash.format(cost);
}
或
显然,上面的代码没有编译,“无法从字符串转换为双精度”。我可以将数字格式初始化为双精度而不是字符串吗
对我来说似乎完全没有必要,这是我试图遵循的UML
+getTotal : double
要将字符串值更改为双精度值,可以使用
String text = "12.34";
Double.parseDouble(text);
您可以在函数中使用它来获得双倍值
public double getTotalCost(){
return Double.parseDouble(cash.format(cost));
}
cash.format()
public String getTotalCostAsString(){
return cash.format(cost);
}
您不能使用公共双精度
,因为$3.50
不是双精度。double是一个没有curreny符号的数值。请提供一个将此代码复制到IDE并运行它的尝试。你会看到它不起作用,所以它不是一个完整的例子。至少显示成本的声明和定义以及你期望的结果和现金的定义。如果你给我们必要的信息,我将取消我的否决票。因此,编辑你的问题并添加信息。这样更好吗?为什么你应该将double格式化为字符串,而不是将其解析为double?那是不可能的sence@Jens这里双精度到字符串的转换在哪里完成?cost是一个double(一个预定义的'double'变量)
,format返回op要求的字符串,所以我提供了代码。我们在这里回答被问到的问题,而不是根据个人问题和信仰否决任何事情。他提到“只是为了按照UML完成任务而尝试获取知识”,所以我向他提供了知识@Jens那么他为什么要将自己的函数写成public double getTotalCost(){return cash.format(cost);}
我知道我的方法需要作为字符串返回,UML说+getTotalCost:double@BCarmar我不知道。Mybe ot应该只返回带有两个小数但没有货币符号的值?@BCarmar如果需要舍入值,请参见此处:感谢您的反馈,我将尝试使用小数格式
public String getTotalCostAsString(){
return cash.format(cost);
}