如何在 Java 中获取法语格式数字的 Double

Tar*_*ros 2 java double number-formatting french

我尝试获取以法国风格格式化的数字的双值。\n因此文本 1 003,25 应存储为值 (1003.25)。

\n\n
public class NumberFormatTest { \n    public static void main(String[] args) throws ParseException {\n        String db = "1003.25";\n        String manualFRA = "1 003,25";\n        double numberDB = Double.parseDouble(db);\n        String ger = NumberFormat.getInstance(Locale.GERMAN).format(numberDB);\n        String fra = NumberFormat.getInstance(Locale.FRENCH).format(numberDB);\n        String eng = NumberFormat.getInstance(Locale.ENGLISH).format(numberDB);\n\n        double gerD = NumberFormat.getNumberInstance(Locale.GERMAN).parse(ger).doubleValue();\n        double fraD = NumberFormat.getNumberInstance(Locale.FRENCH).parse(fra).doubleValue();\n        double mfraD = NumberFormat.getNumberInstance(Locale.FRENCH).parse(manualFRA).doubleValue();\n        double engD = NumberFormat.getNumberInstance(Locale.ENGLISH).parse(eng).doubleValue();\n\n        System.out.println("From database: " + db);\n\n        System.out.println("\\tGerman: " + ger);\n        System.out.println("\\tFrench: " + fra);\n        System.out.println("\\tEnglish: " + eng);\n\n        System.out.println("\\nTo Database: ");  \n        System.out.println("\\tfrom German: "+ gerD);\n        System.out.println("\\tfrom French: "+ fraD);\n        System.out.println("\\tfrom manual French: "+ mfraD);\n        System.out.println("\\tfrom Englisch: "+ engD);\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

\r\n
\r\n
public class NumberFormatTest { \n    public static void main(String[] args) throws ParseException {\n        String db = "1003.25";\n        String manualFRA = "1 003,25";\n        double numberDB = Double.parseDouble(db);\n        String ger = NumberFormat.getInstance(Locale.GERMAN).format(numberDB);\n        String fra = NumberFormat.getInstance(Locale.FRENCH).format(numberDB);\n        String eng = NumberFormat.getInstance(Locale.ENGLISH).format(numberDB);\n\n        double gerD = NumberFormat.getNumberInstance(Locale.GERMAN).parse(ger).doubleValue();\n        double fraD = NumberFormat.getNumberInstance(Locale.FRENCH).parse(fra).doubleValue();\n        double mfraD = NumberFormat.getNumberInstance(Locale.FRENCH).parse(manualFRA).doubleValue();\n        double engD = NumberFormat.getNumberInstance(Locale.ENGLISH).parse(eng).doubleValue();\n\n        System.out.println("From database: " + db);\n\n        System.out.println("\\tGerman: " + ger);\n        System.out.println("\\tFrench: " + fra);\n        System.out.println("\\tEnglish: " + eng);\n\n        System.out.println("\\nTo Database: ");  \n        System.out.println("\\tfrom German: "+ gerD);\n        System.out.println("\\tfrom French: "+ fraD);\n        System.out.println("\\tfrom manual French: "+ mfraD);\n        System.out.println("\\tfrom Englisch: "+ engD);\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\r\n
\r\n
\r\n

\n\n

有谁知道为什么手动法语值是 1.0 而不是 1003.25?\n我该如何解决它?在实际程序中,该值来自文本字段的字符串。

\n\n

在此先感谢您的帮助!

\n

And*_*eas 5

法语格式文本中的空格是NO-BREAK SPACE,而不是常规空格。

如果将字符串文字更改为"1\u00a0003,25",它将起作用。

如果该文本来自外部源(例如用户),那么您可以将空格替换为不间断空格,例如

parse(manualFRA.replace(' ', '\u00a0'))
Run Code Online (Sandbox Code Playgroud)