我有一个变量:
private double classicpreis = 2.5;
我希望将其更改为:
private double classicpreis = 2,5 €;
我认为逗号可以用双,但它不起作用。那我怎么能实现呢?
修改
我想把它输出到这样的东西:
2,50 €
答案 0 :(得分:0)
您可以将代码中的数字写为字符串常量,并使用您选择的语言环境将其解析为double。但是那个欧元符号让我相信你根本不应该使用double
,而是使用十进制类。
答案 1 :(得分:0)
如果您希望声明double
值,则无法更改语言本身,在代码内部总是需要写小数点。
但是有多种方法可以使用逗号而不是点来打印值,例如在应用程序的用户可以看到的显示中。
因此,您应始终使用当前的区域设置格式,例如,如果用户位于德国,则应打印逗号。 Java库中有自动化过程,如下所示:How to format double value for a given locale and number of decimal places?或official tutorial by Oracle。
要使用的课程是NumberFormat
或DecimalFormat
,这是一个小例子:
Locale currentLocale = ...
NumberFormat numberFormatter = NumberFormat.getNumberInstance(currentLocale);
double value = 2.5;
String formattedValue = numberFormatter.format(value);
System.out.println("Formatted value is: " + value);
输出现在会根据您为currentLocale
设置的内容而更改。您当前的区域设置可以通过Locale.getDefault()
获得,但您也可以直接选择来自不同区域的区域设置,例如Locale
中定义的常量,例如Locale.GERMANY
。
您还可以应用小数模式来创建1.004,34
之类的数字。因此,模式为#,##0.00
,可以这样使用:
String pattern = "#,##0.00";
DecimalFormat decimalFormatter = (DecimalFormat) numberFormatter; // The one from above
decimalFormatter.applyPattern(pattern);
String formattedValue = decimalFormatter.format(value);
使用格式模式,您还可以添加€
符号,只需将其添加到模式中即可。
答案 2 :(得分:0)
最简单的解决方案是使用 NumberFormat.getCurrencyInstance(Locale) 或NumberFormat.getCurrenyInstance()并让它进行所有格式化。
假设你有
double preis = 2.5;
然后你可以做例如
Locale locale = Locale.GERMANY;
NumberFormat numberFormat = NumberFormat.getCurrencyInstance(locale);
String s = numberFormat.format(preis);
您将获得"2,50 €"
。
请注意,格式化会考虑所有细节(使用小数
逗号或点,选择的货币符号,数字前后的货币,
两者之间的空格数)取决于您使用的Locale
。
示例:对于Locale.GERMANY
,您获得"2,50 €"
,
对于Locale.US
,您获得"$2.50"
,Locale,UK
获得"£2.50"
。
答案 3 :(得分:0)
现在运行正常。我的工作代码如下所示:
public class Bestellterminal {
private double Preis = 0;
private double classicpreis = 2.50;
classic.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
Preis = Preis + classicpreis;
Locale currentlocale = Locale.GERMANY;
NumberFormat numberFormatter =
NumberFormat.getCurrencyInstance(currentlocale);
String classicpreisx = numberFormatter.format(classicpreis);
String preisx = numberFormatter.format(Preis);
JLabel.setText(String.valueOf("Summe: " + preisx));
}});
}
谢谢你们的帮助。