Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用逗号和欧元符号将双精度格式设置为其他格式_Java_Number Formatting - Fatal编程技术网

Java 如何使用逗号和欧元符号将双精度格式设置为其他格式

Java 如何使用逗号和欧元符号将双精度格式设置为其他格式,java,number-formatting,Java,Number Formatting,我有一个变量: private double classicpreis = 2.5; 我想把它变成这样: private double classicpreis = 2,5 €; 2,50 € public class Bestellterminal { private double Preis = 0; private double classicpreis = 2.50; classic.addActionListener(new ActionListener() {

我有一个变量:

private double classicpreis  = 2.5;
我想把它变成这样:

private double classicpreis  = 2,5 €;
2,50 €
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));

            }});

}
我以为用double可以用逗号,但没用。那么我如何才能做到这一点呢

编辑

我想将其输出为如下内容:

private double classicpreis  = 2,5 €;
2,50 €
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));

            }});

}

您可以将数字作为字符串常量写入代码中,并使用您选择的语言环境将其解析为double。但是,这个欧洲符号让我相信,你根本不应该使用双精度,而应该使用十进制类。

你不能改变语言本身,如果你想声明双精度值,你总是需要在代码内部写小数点


但是,有多种方法可以使用逗号而不是点打印值,例如在应用程序用户看到的显示中

因此,您应该始终使用当前的语言环境格式,例如,如果用户在德国,则应打印逗号。Java库中有自动的过程来实现这一点,如图所示:或

要使用的类是
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.dermany


您还可以应用十进制模式创建数字,如
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);

使用格式模式,您还可以添加
符号,只需将其添加到模式中即可。

最简单的解决方案是使用 或者,让它完成所有的格式化

假设你有

double preis = 2.5;
然后你可以做一个例子

Locale locale = Locale.GERMANY;
NumberFormat numberFormat = NumberFormat.getCurrencyInstance(locale);
String s = numberFormat.format(preis);
您将获得
“2,50欧元”

请注意,格式会考虑所有细节(使用十进制) 逗号或点、所选货币符号、数字前后的货币、, 之间的空格数)取决于您使用的
语言环境。
示例:对于
Locale.GERMANY
您将获得
“2,50欧元”

对于
Locale.US
您可以获得
“$2.50”
,对于
Locale,英国
您可以获得
“$2.50”
,现在运行良好。我的工作代码如下所示:

private double classicpreis  = 2,5 €;
2,50 €
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));

            }});

}

谢谢你们的帮助

小数点与逗号是一个表示问题。代码仍然需要使用小数点。但是当您想要输出值时,您可以根据需要对其进行格式化。在代码本身中,还是作为字符串?对于代码本身,您将无法在其中使用逗号或货币符号作为值的一部分。如果您确实需要逗号,则使用
String
代替,您无法更改语言本身,在代码内部您将始终需要写入小数点。但是,有多种方法可以使用逗号而不是点打印值。因此,您应该始终使用当前的语言环境格式,例如,如果用户在德国,则应打印逗号。Java库中对此有自动处理,如图所示:它只用于输出。在代码本身中,它可以是点。我只是想知道如何以正确的方式格式化它。非常感谢你对我的帮助。我的代码现在运行良好。非常感谢您对我的帮助。我的代码现在运行良好。