如何将 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.ENGLISHLocale.US 或类似设置

您可以使用字符串替换并将 "," 替换为 ""

format.parse(("1,234.56").replace(",", ""));

乱七八糟,但你不需要解决语言环境问题。

法语语言环境使用逗号表示小数点。您需要使用美国语言环境:

NumberFormat format = NumberFormat.getInstance(Locale.US);

Locale.ENGLISH基于语言:

NumberFormat format = NumberFormat.getInstance(Locale.ENGLISH);