如何使用逗号和欧元符号格式化double

时间:2017-08-16 22:23:50

标签: java number-formatting

我有一个变量:

private double classicpreis  = 2.5;

我希望将其更改为:

private double classicpreis  = 2,5 €;

我认为逗号可以用双,但它不起作用。那我怎么能实现呢?

修改

我想把它输出到这样的东西:

2,50 €

4 个答案:

答案 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

要使用的课程是NumberFormatDecimalFormat,这是一个小例子:

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));

            }});

}

谢谢你们的帮助。