如何将 Java 中的“1,234.56”解析为 Double?
How to parse "1,234.56" in Java as Double?
我在 Java 中解析“1,234.56”时遇到问题,similar question 建议在数字格式中使用法语语言环境,但它解析的结果不正确。这是我拥有的:
NumberFormat format = NumberFormat.getInstance(Locale.FRANCE);
Number number = format.parse("1,234.56");
System.out.println(number.doubleValue()); // Should get 1234.56, got 1.234 instead
Number number = format.parse("1,234,567.89");
System.out.println(number.doubleValue()); // Should get 1234567.89
1,234.56
是 不是 法语表示法。 (类似于 1.234,56
是)。
将您的区域设置更改为 Locale.ENGLISH
、Locale.US
或类似设置
您可以使用字符串替换并将 ","
替换为 ""
format.parse(("1,234.56").replace(",", ""));
乱七八糟,但你不需要解决语言环境问题。
法语语言环境使用逗号表示小数点。您需要使用美国语言环境:
NumberFormat format = NumberFormat.getInstance(Locale.US);
或Locale.ENGLISH
基于语言:
NumberFormat format = NumberFormat.getInstance(Locale.ENGLISH);
我在 Java 中解析“1,234.56”时遇到问题,similar question 建议在数字格式中使用法语语言环境,但它解析的结果不正确。这是我拥有的:
NumberFormat format = NumberFormat.getInstance(Locale.FRANCE);
Number number = format.parse("1,234.56");
System.out.println(number.doubleValue()); // Should get 1234.56, got 1.234 instead
Number number = format.parse("1,234,567.89");
System.out.println(number.doubleValue()); // Should get 1234567.89
1,234.56
是 不是 法语表示法。 (类似于 1.234,56
是)。
将您的区域设置更改为 Locale.ENGLISH
、Locale.US
或类似设置
您可以使用字符串替换并将 ","
替换为 ""
format.parse(("1,234.56").replace(",", ""));
乱七八糟,但你不需要解决语言环境问题。
法语语言环境使用逗号表示小数点。您需要使用美国语言环境:
NumberFormat format = NumberFormat.getInstance(Locale.US);
或Locale.ENGLISH
基于语言:
NumberFormat format = NumberFormat.getInstance(Locale.ENGLISH);